aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_array.rb10
-rw-r--r--test/ruby/test_enum.rb2
-rw-r--r--test/ruby/test_range.rb8
3 files changed, 20 insertions, 0 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb
index fa158185f8..d0f12b280a 100644
--- a/test/ruby/test_array.rb
+++ b/test/ruby/test_array.rb
@@ -756,6 +756,8 @@ class TestArray < Test::Unit::TestCase
def test_first
assert_equal(3, @cls[3, 4, 5].first)
assert_equal(nil, @cls[].first)
+ assert_equal(2, @cls[1, 2, 3, 4].first { |i| i.even? })
+ assert_equal(nil, @cls[1, 2, 3, 4].first { |i| i > 100 })
end
def test_flatten
@@ -1059,6 +1061,8 @@ class TestArray < Test::Unit::TestCase
assert_equal(nil, @cls[].last)
assert_equal(1, @cls[1].last)
assert_equal(99, @cls[*(3..99).to_a].last)
+ assert_equal(3, @cls[1, 2, 3, 4].last { |i| i.odd? })
+ assert_equal(nil, @cls[1, 2, 3, 4].last { |i| i > 100 })
end
def test_length
@@ -1999,11 +2003,17 @@ class TestArray < Test::Unit::TestCase
def test_first2
assert_equal([0], [0].first(2))
assert_raise(ArgumentError) { [0].first(-1) }
+ assert_equal([2, 4], @cls[1, 2, 4, 6].first(2) { |i| i.even? })
+ assert_equal([2, 4, 6], @cls[2, 4, 5, 6].first(10) { |i| i.even? })
+ assert_raise(ArgumentError) { @cls[1, 2].first(-1) { |i| i.even? } }
end
def test_last2
assert_equal([0], [0].last(2))
assert_raise(ArgumentError) { [0].last(-1) }
+ assert_equal([4, 6], @cls[2, 4, 5, 6].last(2) { |i| i.even? })
+ assert_equal([2, 4, 6], @cls[2, 4, 5, 6].last(10) { |i| i.even? })
+ assert_raise(ArgumentError) { @cls[1, 2].last(-1) { |i| i.even? } }
end
def test_shift2
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb
index ba973e2d48..c230654751 100644
--- a/test/ruby/test_enum.rb
+++ b/test/ruby/test_enum.rb
@@ -267,6 +267,8 @@ class TestEnumerable < Test::Unit::TestCase
assert_equal([1, 2, 3], @obj.first(3))
assert_nil(@empty.first)
assert_equal([], @empty.first(10))
+ assert_equal(2, @obj.first { |i| i.even? })
+ assert_equal([3], @obj.first(2) { |i| i > 2 })
bug5801 = '[ruby-dev:45041]'
assert_in_out_err([], <<-'end;', [], /unexpected break/, bug5801)
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index 2fc2a2b1d3..733d45b6f4 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -271,6 +271,10 @@ class TestRange < Test::Unit::TestCase
assert_equal("a", ("a".."c").first)
assert_equal("c", ("a".."c").last)
assert_equal(0, (2..0).last)
+ assert_equal(1, (0..11).first { |i| i.odd? })
+ assert_equal(11, (0..11).last { |i| i.odd? })
+ assert_equal([1, 3], (0..11).first(2) { |i| i.odd? })
+ assert_equal([9, 11], (0..11).last(2) { |i| i.odd? })
assert_equal([0, 1, 2], (0...10).first(3))
assert_equal([7, 8, 9], (0...10).last(3))
@@ -279,6 +283,10 @@ class TestRange < Test::Unit::TestCase
assert_equal("a", ("a"..."c").first)
assert_equal("c", ("a"..."c").last)
assert_equal(0, (2...0).last)
+ assert_equal(1, (0...11).first { |i| i.odd? })
+ assert_equal(9, (0...11).last { |i| i.odd? })
+ assert_equal([1, 3], (0...11).first(2) { |i| i.odd? })
+ assert_equal([7, 9], (0...11).last(2) { |i| i.odd? })
end
def test_to_s