summaryrefslogtreecommitdiff
path: root/test/ruby/test_array.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-29 10:29:57 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-08-29 10:33:22 +0900
commit5dc36ddcd00fc556c04c15ce9770c5a84d7d43dc (patch)
treee652141942f9363c8d4e4de8d7e9e0fe237fa2a8 /test/ruby/test_array.rb
parent7731be94eb78c34540e04e95334b3b824a3b6e3f (diff)
Add out of range tests for Array#slice!
Diffstat (limited to 'test/ruby/test_array.rb')
-rw-r--r--test/ruby/test_array.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb
index 8f05f9cebd..78e497d345 100644
--- a/test/ruby/test_array.rb
+++ b/test/ruby/test_array.rb
@@ -1624,6 +1624,19 @@ class TestArray < Test::Unit::TestCase
assert_raise(ArgumentError) { @cls[1].slice!(0, 0, 0) }
end
+ def test_slice_out_of_range!
+ a = @cls[*(1..100).to_a]
+
+ assert_nil(a.clone.slice!(-101..-1))
+ assert_nil(a.clone.slice!(-101..))
+
+ # assert_raise_with_message(RangeError, "((-101..-1).%(2)) out of range") { a.clone.slice!((-101..-1)%2) }
+ # assert_raise_with_message(RangeError, "((-101..).%(2)) out of range") { a.clone.slice!((-101..)%2) }
+
+ assert_nil(a.clone.slice!(10, -3))
+ assert_equal @cls[], a.clone.slice!(10..7)
+ end
+
def test_sort
a = @cls[ 4, 1, 2, 3 ]
assert_equal(@cls[1, 2, 3, 4], a.sort)