diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-08 09:13:39 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-02-08 09:13:39 +0900 |
| commit | 60529fdeeb54b6f22d8d6463d33ba3fe6bc593e2 (patch) | |
| tree | 2f9f4bcca65374b0714375a75ab022d58f42dfbf | |
| parent | bdc9de875f5545d4dbf8136dbfb576a0caacf7e3 (diff) | |
| parent | e846db709f2ce879a91dcc4c90b7f348020ff6b0 (diff) | |
| download | mruby-60529fdeeb54b6f22d8d6463d33ba3fe6bc593e2.tar.gz mruby-60529fdeeb54b6f22d8d6463d33ba3fe6bc593e2.zip | |
Merge branch 'fix-enumerator-initialize-for-nil-or-false' of https://github.com/shuujii/mruby into shuujii-fix-enumerator-initialize-for-nil-or-false
| -rw-r--r-- | mrbgems/mruby-enumerator/mrblib/enumerator.rb | 12 | ||||
| -rw-r--r-- | mrbgems/mruby-enumerator/test/enumerator.rb | 13 |
2 files changed, 13 insertions, 12 deletions
diff --git a/mrbgems/mruby-enumerator/mrblib/enumerator.rb b/mrbgems/mruby-enumerator/mrblib/enumerator.rb index cbf53974a..143f2b74f 100644 --- a/mrbgems/mruby-enumerator/mrblib/enumerator.rb +++ b/mrbgems/mruby-enumerator/mrblib/enumerator.rb @@ -109,11 +109,11 @@ class Enumerator # # p fib.take(10) # => [1, 1, 2, 3, 5, 8, 13, 21, 34, 55] # - def initialize(obj=nil, meth=:each, *args, &block) + def initialize(obj=NONE, meth=:each, *args, &block) if block obj = Generator.new(&block) - else - raise ArgumentError unless obj + elsif obj == NONE + raise ArgumentError, "wrong number of arguments (given 0, expected 1+)" end if @obj and !self.respond_to?(meth) raise NoMethodError, "undefined method #{meth}" @@ -221,13 +221,11 @@ class Enumerator end def inspect - return "#<#{self.class}: uninitialized>" unless @obj - if @args && @args.size > 0 args = @args.join(", ") - "#<#{self.class}: #{@obj}:#{@meth}(#{args})>" + "#<#{self.class}: #{@obj.inspect}:#{@meth}(#{args})>" else - "#<#{self.class}: #{@obj}:#{@meth}>" + "#<#{self.class}: #{@obj.inspect}:#{@meth}>" end end diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb index f3bd1bdba..0d2a95292 100644 --- a/mrbgems/mruby-enumerator/test/enumerator.rb +++ b/mrbgems/mruby-enumerator/test/enumerator.rb @@ -21,6 +21,7 @@ assert 'Enumerator.new' do assert_equal [1,2,3], @obj.to_enum(:foo, 1,2,3).to_a assert_equal [1,2,3], Enumerator.new(@obj, :foo, 1,2,3).to_a assert_equal [1,2,3], Enumerator.new { |y| i = 0; loop { y << (i += 1) } }.take(3) + assert_equal [], Enumerator.new(false, :__id__).to_a assert_raise(ArgumentError) { Enumerator.new } assert_raise(ArgumentError) { @obj.to_enum } @@ -92,11 +93,13 @@ end assert 'Enumerator#inspect' do e = (0..10).each - assert_equal("#<Enumerator: 0..10:each>", e.inspect) - e = Enumerator.new("FooObject", :foo, 1) - assert_equal("#<Enumerator: FooObject:foo(1)>", e.inspect) - e = Enumerator.new("FooObject", :foo, 1, 2, 3) - assert_equal("#<Enumerator: FooObject:foo(1, 2, 3)>", e.inspect) + assert_equal('#<Enumerator: 0..10:each>', e.inspect) + e = Enumerator.new('FooObject', :foo, 1) + assert_equal('#<Enumerator: "FooObject":foo(1)>', e.inspect) + e = Enumerator.new('FooObject', :foo, 1, 2, 3) + assert_equal('#<Enumerator: "FooObject":foo(1, 2, 3)>', e.inspect) + e = Enumerator.new(nil, :to_s) + assert_equal('#<Enumerator: nil:to_s>', e.inspect) end assert 'Enumerator#each' do |
