1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* enumerator.c (enumerator_next_p): should check correctly even when

e.next has not been called before.

* enumerator.c (enumerator_next): raise StopIteration (name taken
  from Python) instead of IndexError.

* enum.c (enum_zip): catch StopIteration exception.

* enumerator.c (enumerator_with_index): return Enumerator if no
  block is given.

* test/ruby/test_iterator.rb (TestIterator::test_enumerator): add
  test for enumerators.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2007-08-08 07:07:03 +00:00
parent cc317d9208
commit c186fdb90b
5 changed files with 68 additions and 14 deletions

View file

@ -488,4 +488,23 @@ class TestIterator < Test::Unit::TestCase
def test_block_given_within_iterator
assert_equal(["b"], ["a", "b", "c"].grep(IterString.new("b")) {|s| s})
end
def test_enumerator
[1,2,3].each.with_index {|x,i|
assert_equal(x, i+1)
}
e = [1,2,3].each
assert_equal(1, e.next)
assert_equal(true, e.next?)
assert_equal(2, e.next)
assert_equal(3, e.next)
assert_raises(StopIteration){e.next}
e.rewind
assert_equal(true, e.next?)
assert_equal(1, e.next)
assert_equal([[1, 8, 10], [2, 6, 11], [3, 4, 12]],
(1..10).zip([8,6,4],(10..100)).to_a)
end
end