diff options
| author | Shouichi Kamiya <shouichi.kamiya@gmail.com> | 2023-08-18 10:30:57 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2023-09-16 14:57:19 +0900 |
| commit | e9b503f1bb9692eda1d1f55f62c19d861b88a0d5 (patch) | |
| tree | 8c3a734105021eea0f5235a844e8b93dccaa3d27 /test | |
| parent | 7d08dbd015a16c27f2d9c77751e80fa6efba2d7a (diff) | |
[Feature #19839] Add Range#overlap?
Add a method that returns true if two range overlap, otherwise false.
```
(0..10).overlap?(5..15) #=> true
(0..10).overlap?(20..30) #=> false
```
Diffstat (limited to 'test')
| -rw-r--r-- | test/ruby/test_range.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 820ca9e9c2..17d1e3a431 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -1051,4 +1051,32 @@ class TestRange < Test::Unit::TestCase def test_count assert_equal(Float::INFINITY, (1..).count) end + + def test_overlap? + assert_not_operator(0..2, :overlap?, -2..-1) + assert_not_operator(0..2, :overlap?, -2...0) + assert_operator(0..2, :overlap?, -1..0) + assert_operator(0..2, :overlap?, 1..2) + assert_operator(0..2, :overlap?, 2..3) + assert_not_operator(0..2, :overlap?, 3..4) + assert_not_operator(0...2, :overlap?, 2..3) + + assert_operator(..0, :overlap?, -1..0) + assert_operator(...0, :overlap?, -1..0) + assert_operator(..0, :overlap?, 0..1) + assert_operator(..0, :overlap?, ..1) + assert_not_operator(..0, :overlap?, 1..2) + assert_not_operator(...0, :overlap?, 0..1) + + assert_not_operator(0.., :overlap?, -2..-1) + assert_not_operator(0.., :overlap?, ...0) + assert_operator(0.., :overlap?, -1..0) + assert_operator(0.., :overlap?, ..0) + assert_operator(0.., :overlap?, 0..1) + assert_operator(0.., :overlap?, 1..2) + assert_operator(0.., :overlap?, 1..) + + assert_raise(TypeError) { (0..).overlap?(1) } + assert_raise(TypeError) { (0..).overlap?(nil) } + end end |
