diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-02-14 15:45:11 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-02-14 15:45:11 +0000 |
commit | f526784e1ee21f6d2b5d130673f5c3d96761f2bb (patch) | |
tree | 4cda7a4eb87c0458aa5da95825ce428d0db96e17 /test | |
parent | ab9bc151e828843b9d9170754f4ba4d92ef85750 (diff) | |
download | ruby-f526784e1ee21f6d2b5d130673f5c3d96761f2bb.tar.gz |
* enum.c: Enumerable#{min,min_by,max,max_by} extended to take an
optional argument.
(nmin_cmp): New function.
(nmin_block_cmp): Ditto
(nmin_filter): Ditto.
(nmin_i): Ditto.
(nmin_run): Ditto.
(enum_min): Call nmin_run if the optional argument is given.
(nmin_max): Ditto.
(nmin_min_by): Ditto.
(nmin_max_by): Ditto.
* range.c: Range#{min,max} extended to take an optional argument.
(range_min): Call range_first if the optional argument is given.
(range_max): Call rb_call_super if the optional argument is given.
[ruby-core:57111] [Feature #8887]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_enum.rb | 8 | ||||
-rw-r--r-- | test/ruby/test_range.rb | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 3ee6846b33..20800cdd61 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -209,6 +209,9 @@ class TestEnumerable < Test::Unit::TestCase assert_equal("albatross", ary.min) assert_equal("dog", ary.min {|a,b| a.length <=> b.length }) assert_equal(1, [3,2,1].min) + assert_equal(%w[albatross dog], ary.min(2)) + assert_equal(%w[dog horse], + ary.min(2) {|a,b| a.length <=> b.length }) end def test_max @@ -218,6 +221,9 @@ class TestEnumerable < Test::Unit::TestCase assert_equal("horse", ary.max) assert_equal("albatross", ary.max {|a,b| a.length <=> b.length }) assert_equal(1, [3,2,1].max{|a,b| b <=> a }) + assert_equal(%w[dog horse], ary.max(2)) + assert_equal(%w[horse albatross], + ary.max(2) {|a,b| a.length <=> b.length }) end def test_minmax @@ -236,6 +242,7 @@ class TestEnumerable < Test::Unit::TestCase a = %w(albatross dog horse) assert_equal("dog", a.min_by {|x| x.length }) assert_equal(3, [2,3,1].min_by {|x| -x }) + assert_equal(%w[dog horse], a.min_by(2) {|x| x.length }) end def test_max_by @@ -243,6 +250,7 @@ class TestEnumerable < Test::Unit::TestCase a = %w(albatross dog horse) assert_equal("albatross", a.max_by {|x| x.length }) assert_equal(1, [2,3,1].max_by {|x| -x }) + assert_equal(%w[horse albatross], a.max_by(2) {|x| x.length }) end def test_minmax_by diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index 41107e094a..69060aa521 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -60,6 +60,9 @@ class TestRange < Test::Unit::TestCase assert_equal(0, (0..0).min) assert_equal(nil, (0...0).min) + + assert_equal([0,1,2], (0..10).min(3)) + assert_equal([0,1], (0..1).min(3)) end def test_max @@ -77,6 +80,9 @@ class TestRange < Test::Unit::TestCase assert_equal(0, (0..0).max) assert_equal(nil, (0...0).max) + + assert_equal([8,9,10], (0..10).max(3)) + assert_equal([7,8,9], (0...10).max(3)) end def test_initialize_twice |