diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-18 00:06:05 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-18 00:06:05 +0000 |
commit | ddd155842fb4fd96a028836d926bae7501cbd985 (patch) | |
tree | b51c8ae4bed4325a62301eda1319a6fbf21185ec /test | |
parent | 944994b4cceb3ce094090237d04b94d867dd22db (diff) | |
download | ruby-ddd155842fb4fd96a028836d926bae7501cbd985.tar.gz |
* enum.c: Enumerable#slice_after implemented.
* enumerator.c: Enumerator::Lazy#slice_after implemented.
Requested by Tsuyoshi Sawada. [ruby-core:58123] [Feature #9071]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45981 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_enum.rb | 43 | ||||
-rw-r--r-- | test/ruby/test_lazy_enumerator.rb | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index 7c8f37c8ce..d6795e49dd 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -531,6 +531,49 @@ class TestEnumerable < Test::Unit::TestCase assert_not_warn{ss.slice_before(/\A...\z/).to_a} end + def test_slice_after0 + assert_raise(ArgumentError) { [].slice_after } + end + + def test_slice_after1 + e = [].slice_after {|a| flunk "should not be called" } + assert_equal([], e.to_a) + + e = [1,2].slice_after(1) + assert_equal([[1], [2]], e.to_a) + + e = [1,2].slice_after(3) + assert_equal([[1, 2]], e.to_a) + + [true, false].each {|b| + block_results = [true, b] + e = [1,2].slice_after {|a| block_results.shift } + assert_equal([[1], [2]], e.to_a) + assert_equal([], block_results) + + block_results = [false, b] + e = [1,2].slice_after {|a| block_results.shift } + assert_equal([[1, 2]], e.to_a) + assert_equal([], block_results) + } + end + + def test_slice_after_both_pattern_and_block + assert_raise(ArgumentError) { [].slice_after(1) {|a| true } } + end + + def test_slice_after_continuation_lines + lines = ["foo\n", "bar\\\n", "baz\n", "\n", "qux\n"] + e = lines.slice_after(/[^\\]\n\z/) + assert_equal([["foo\n"], ["bar\\\n", "baz\n"], ["\n", "qux\n"]], e.to_a) + end + + def test_slice_before_empty_line + lines = ["foo", "", "bar"] + e = lines.slice_after(/\A\s*\z/) + assert_equal([["foo", ""], ["bar"]], e.to_a) + end + def test_detect @obj = ('a'..'z') assert_equal('c', @obj.detect {|x| x == 'c' }) diff --git a/test/ruby/test_lazy_enumerator.rb b/test/ruby/test_lazy_enumerator.rb index 8ac3340173..549d0f104e 100644 --- a/test/ruby/test_lazy_enumerator.rb +++ b/test/ruby/test_lazy_enumerator.rb @@ -470,6 +470,7 @@ EOS bug7507 = '[ruby-core:51510]' { slice_before: //, + slice_after: //, with_index: nil, cycle: nil, each_with_object: 42, |