diff options
Diffstat (limited to 'mrbgems/mruby-method/test/method.rb')
| -rw-r--r-- | mrbgems/mruby-method/test/method.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/mrbgems/mruby-method/test/method.rb b/mrbgems/mruby-method/test/method.rb index 675277726..ba4d05e3c 100644 --- a/mrbgems/mruby-method/test/method.rb +++ b/mrbgems/mruby-method/test/method.rb @@ -208,6 +208,16 @@ assert 'Method#to_proc' do yield 39 end assert_equal 42, o.bar(&3.method(:+)) + + def o.baz(x, y, z, *w, u:, v:, **opts, &blk) + { x:, y:, z:, w:, u:, v:, opts:, blk: } + end + blk = -> { } + values = { x: 1, y: 2, z: 3, w: [4, 5, 6], u: 7, v: 8, opts: { s: 9, t: 10 }, blk: blk } + assert_equal values, o.method(:baz).to_proc.call(1, 2, 3, 4, 5, 6, u: 7, v: 8, s: 9, t: 10, &blk) + assert_equal values, o.method(:baz).to_proc.call(1, 2, 3, 4, 5, 6, **{ u: 7, v: 8, s: 9, t: 10 }, &blk) + assert_equal values, o.method(:baz).to_proc.call(*[1, 2, 3, 4, 5, 6], u: 7, v: 8, s: 9, t: 10, &blk) + assert_equal values, o.method(:baz).to_proc.call(*[1, 2, 3, 4, 5, 6], **{ u: 7, v: 8, s: 9, t: 10 }, &blk) end assert 'to_s' do @@ -449,4 +459,17 @@ assert 'UnboundMethod#bind_call' do assert_equal(0, m.bind_call([])) assert_equal(1, m.bind_call([1])) assert_equal(2, m.bind_call([1,2])) + + o = Object.new + def m(x, y, z, *w, u:, v:, **opts, &blk) + { x:, y:, z:, w:, u:, v:, opts:, blk: } + end + m = o.method(:m).unbind + blk = -> { } + values = { x: 1, y: 2, z: 3, w: [4, 5, 6], u: 7, v: 8, opts: { s: 9, t: 10 }, blk: blk } + assert_equal values, m.bind_call(o, 1, 2, 3, 4, 5, 6, u: 7, v: 8, s: 9, t: 10, &blk) + assert_equal values, m.bind_call(o, 1, 2, 3, 4, 5, 6, **{ u: 7, v: 8, s: 9, t: 10 }, &blk) + assert_equal values, m.bind_call(o, *[1, 2, 3, 4, 5, 6], u: 7, v: 8, s: 9, t: 10, &blk) + assert_equal values, m.bind_call(o, *[1, 2, 3, 4, 5, 6], **{ u: 7, v: 8, s: 9, t: 10 }, &blk) + assert_raise(ArgumentError) { m.bind_call } end |
