From 6f9cb7406aed5f06dffdb64356d2891aba4a15b1 Mon Sep 17 00:00:00 2001 From: ksss Date: Sat, 14 Jan 2017 10:15:40 +0900 Subject: Implement Kernel.#caller --- mrbgems/mruby-kernel-ext/test/kernel.rb | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'mrbgems/mruby-kernel-ext/test') diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb index cc6af13a3..ee11dacbf 100644 --- a/mrbgems/mruby-kernel-ext/test/kernel.rb +++ b/mrbgems/mruby-kernel-ext/test/kernel.rb @@ -3,6 +3,33 @@ assert('Kernel.fail, Kernel#fail') do assert_raise(RuntimeError) { Kernel.fail } end +assert('Kernel.caller, Kernel#caller') do + c = Class.new do + def foo(*args) + caller(*args) + end + + def bar(*args) + foo(*args) + end + + def baz(*args) + bar(*args) + end + end + assert_equal "#bar", c.new.baz[0][-4..-1] + assert_equal "#foo", c.new.baz(0)[0][-4..-1] + assert_equal "#bar", c.new.baz(1)[0][-4..-1] + assert_equal "#baz", c.new.baz(2)[0][-4..-1] + assert_equal ["#foo", "#bar"], c.new.baz(0, 2).map { |i| i[-4..-1] } + assert_equal ["#bar", "#baz"], c.new.baz(1..2).map { |i| i[-4..-1] } + assert_nil c.new.baz(10..20) + assert_raise(ArgumentError) { c.new.baz(-1) } + assert_raise(ArgumentError) { c.new.baz(-1, 1) } + assert_raise(ArgumentError) { c.new.baz(1, -1) } + assert_raise(TypeError) { c.new.baz(nil) } +end + assert('Kernel#__method__') do assert_equal(:m, Class.new {def m; __method__; end}.new.m) assert_equal(:m, Class.new {define_method(:m) {__method__}}.new.m) -- cgit v1.2.3 From 59d9f313dfc706789b303ec259fb88ff19207ddc Mon Sep 17 00:00:00 2001 From: ksss Date: Sat, 14 Jan 2017 14:33:47 +0900 Subject: Skip when backtrace doesn't get --- mrbgems/mruby-kernel-ext/test/kernel.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'mrbgems/mruby-kernel-ext/test') diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb index ee11dacbf..dd7cea86a 100644 --- a/mrbgems/mruby-kernel-ext/test/kernel.rb +++ b/mrbgems/mruby-kernel-ext/test/kernel.rb @@ -4,6 +4,8 @@ assert('Kernel.fail, Kernel#fail') do end assert('Kernel.caller, Kernel#caller') do + skip "backtrace isn't available" if caller(0).empty? + c = Class.new do def foo(*args) caller(*args) -- cgit v1.2.3