summaryrefslogtreecommitdiff
path: root/test/ruby/test_range.rb
diff options
context:
space:
mode:
authorShouichi Kamiya <shouichi.kamiya@gmail.com>2023-08-18 10:30:57 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2023-09-16 14:57:19 +0900
commite9b503f1bb9692eda1d1f55f62c19d861b88a0d5 (patch)
tree8c3a734105021eea0f5235a844e8b93dccaa3d27 /test/ruby/test_range.rb
parent7d08dbd015a16c27f2d9c77751e80fa6efba2d7a (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/ruby/test_range.rb')
-rw-r--r--test/ruby/test_range.rb28
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