summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enumerator/test
diff options
context:
space:
mode:
authorksss <[email protected]>2014-03-15 00:03:53 +0900
committerksss <[email protected]>2014-03-15 08:15:16 +0900
commit6b3cc0052d93983cd7cb9ee48a3c4c140046fc2a (patch)
tree24443202e4504aa2f8dc0bfadd2cb48f45125ddf /mrbgems/mruby-enumerator/test
parent47fc784b567d58c48ad1f018e3b56926acd76725 (diff)
downloadmruby-6b3cc0052d93983cd7cb9ee48a3c4c140046fc2a.tar.gz
mruby-6b3cc0052d93983cd7cb9ee48a3c4c140046fc2a.zip
fix self modifying bug
Diffstat (limited to 'mrbgems/mruby-enumerator/test')
-rw-r--r--mrbgems/mruby-enumerator/test/enumerator.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb
index bbb22ee6d..2c85feef3 100644
--- a/mrbgems/mruby-enumerator/test/enumerator.rb
+++ b/mrbgems/mruby-enumerator/test/enumerator.rb
@@ -89,6 +89,27 @@ assert 'Enumerator#each' do
assert_equal([1], ary)
end
+assert 'Enumerator#each arguments' do
+ obj = Object.new
+
+ def obj.each_arg(a, b=:b, *rest)
+ yield a
+ yield b
+ yield rest
+ :method_returned
+ end
+
+ enum = obj.to_enum :each_arg, :a, :x
+
+ assert_equal [:a, :x, []], enum.each.to_a
+ assert_true enum.each.equal?(enum)
+ assert_equal :method_returned, enum.each { |elm| elm }
+
+ assert_equal [:a, :x, [:y, :z]], enum.each(:y, :z).to_a
+ assert_false enum.each(:y, :z).equal?(enum)
+ assert_equal :method_returned, enum.each(:y, :z) { |elm| elm }
+end
+
assert 'Enumerator#next' do
e = 3.times
3.times { |i|