diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/-ext-/test_enumerator_kw.rb | 11 | ||||
-rw-r--r-- | test/ruby/test_enumerator.rb | 8 |
2 files changed, 19 insertions, 0 deletions
diff --git a/test/-ext-/test_enumerator_kw.rb b/test/-ext-/test_enumerator_kw.rb new file mode 100644 index 0000000000..fb47c2bcf8 --- /dev/null +++ b/test/-ext-/test_enumerator_kw.rb @@ -0,0 +1,11 @@ +require 'test/unit' +require '-test-/enumerator_kw' + +class TestEnumeratorKw < Test::Unit::TestCase + def test_enumerator_kw + o = Object.new + o.extend Bug::EnumeratorKw + assert_equal([nil, [], {:a=>1}, o], o.m(a: 1) { |*a| a }) + assert_equal([nil, [[], {:a=>1}, o], nil, o], o.m(a: 1).each { |*a| a }) + end +end diff --git a/test/ruby/test_enumerator.rb b/test/ruby/test_enumerator.rb index 1e306c33a2..65adb5a438 100644 --- a/test/ruby/test_enumerator.rb +++ b/test/ruby/test_enumerator.rb @@ -831,6 +831,14 @@ class TestEnumerator < Test::Unit::TestCase assert_equal [1, 2, 3], enum.take(3) assert_equal [1, 2], passed_args + # With initial keyword arguments + passed_args = [] + enum = Enumerator.produce(a: 1, b: 1) { |obj| passed_args << obj; obj.shift if obj.respond_to?(:shift)} + assert_instance_of(Enumerator, enum) + assert_equal Float::INFINITY, enum.size + assert_equal [{b: 1}, [1], :a, nil], enum.take(4) + assert_equal [{b: 1}, [1], :a], passed_args + # Raising StopIteration words = "The quick brown fox jumps over the lazy dog.".scan(/\w+/) enum = Enumerator.produce { words.shift or raise StopIteration } |