summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2025-03-18 17:55:46 +0900
committerNobuyoshi Nakada <[email protected]>2025-03-18 17:55:46 +0900
commitc7f31c88aeed45607d2abc6b641ad2ccfd77e240 (patch)
treeb6ec5573e12da60e6a77a6da317f25496ee4fb25
parent76aaf8ddf4b13411f925085046cee2422bb9902e (diff)
[Feature #20702] Tests for Array#fetch_values
-rw-r--r--spec/ruby/core/array/fetch_values_spec.rb1
-rw-r--r--test/ruby/test_array.rb12
2 files changed, 13 insertions, 0 deletions
diff --git a/spec/ruby/core/array/fetch_values_spec.rb b/spec/ruby/core/array/fetch_values_spec.rb
index 559b6c2b2f..075dcc7a52 100644
--- a/spec/ruby/core/array/fetch_values_spec.rb
+++ b/spec/ruby/core/array/fetch_values_spec.rb
@@ -11,6 +11,7 @@ describe "Array#fetch_values" do
it "returns the values for indexes" do
@array.fetch_values(0).should == [:a]
@array.fetch_values(0, 2).should == [:a, :c]
+ @array.fetch_values(-1).should == [:c]
end
it "returns the values for indexes ordered in the order of the requested indexes" do
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb
index e2f07ba115..19f79d236d 100644
--- a/test/ruby/test_array.rb
+++ b/test/ruby/test_array.rb
@@ -2716,6 +2716,18 @@ class TestArray < Test::Unit::TestCase
assert_equal(2, [0, 1].fetch(2, 2))
end
+ def test_fetch_values
+ ary = @cls[1, 2, 3]
+ assert_equal([], ary.fetch_values())
+ assert_equal([1], ary.fetch_values(0))
+ assert_equal([3, 1, 3], ary.fetch_values(2, 0, -1))
+ assert_raise(TypeError) {ary.fetch_values("")}
+ assert_raise(IndexError) {ary.fetch_values(10)}
+ assert_raise(IndexError) {ary.fetch_values(-20)}
+ assert_equal(["10 not found"], ary.fetch_values(10) {|i| "#{i} not found"})
+ assert_equal(["10 not found", 3], ary.fetch_values(10, 2) {|i| "#{i} not found"})
+ end
+
def test_index2
a = [0, 1, 2]
assert_equal(a, a.index.to_a)