From fb04c69418ceee696a114fe31279cf3a5ea16d30 Mon Sep 17 00:00:00 2001 From: Yusuke Endoh Date: Wed, 21 Apr 2021 13:02:29 +0900 Subject: array.c (rb_ary_zip): take only as many as needed from an Enumerator (#4389) [Bug #17814] --- test/ruby/test_array.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index bf6a728574..4a9863cc54 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -2735,6 +2735,17 @@ class TestArray < Test::Unit::TestCase assert_equal [[42, 1]], [42].zip(r), bug8153 end + def test_zip_with_enumerator + bug17814 = "ruby-core:103513" + + step = 0.step + e = Enumerator.produce { step.next } + a = %w(a b c) + assert_equal([["a", 0], ["b", 1], ["c", 2]], a.zip(e)) + assert_equal([["a", 3], ["b", 4], ["c", 5]], a.zip(e)) + assert_equal([["a", 6], ["b", 7], ["c", 8]], a.zip(e)) + end + def test_transpose assert_equal([[1, :a], [2, :b], [3, :c]], [[1, 2, 3], [:a, :b, :c]].transpose) -- cgit v1.2.3