From 8804c7db6585d7cf3eda735f4758007704f237af Mon Sep 17 00:00:00 2001 From: Daniel Bovensiepen Date: Sat, 2 Jun 2012 01:39:53 +0800 Subject: Add Test Case for issue #211 --- test/t/kernel.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index cd1f2d99e..847f1baeb 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -112,7 +112,17 @@ assert('Kernel#respond_to?', '15.3.1.2.43') do respond_to? :nil? end -# TODO at the moment doesn't comply to ISO assert('Kernel#send', '15.3.1.2.44') do +assert('Kernel#send', '15.3.1.2.44') do + # test with block + l = send(:lambda) do + true + end + l.call and l.class == Proc and + # test with argument + send(:respond_to?, :nil?) and + # test without argument and without block + send(:public_methods).class == Array +end assert('Kernel#singleton_methods', '15.3.1.2.45') do singleton_methods.class == Array -- cgit v1.2.3 From f537e2bb96a85d7ca75777f64cad13fea8d4937c Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Tue, 12 Jun 2012 19:09:11 +0900 Subject: block_given? should work; close #262 --- src/kernel.c | 19 ++++++++++++------- test/t/kernel.rb | 9 ++++++++- 2 files changed, 20 insertions(+), 8 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/src/kernel.c b/src/kernel.c index 04e427327..f233fdf6d 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -269,12 +269,6 @@ mrb_f_send(mrb_state *mrb, mrb_value self) return mrb_funcall_with_block(mrb,self, mrb_string_value_ptr(mrb, name), argc, argv, block); } -static mrb_value -mrb_f_block_given_p(void) -{ - return mrb_false_value(); /* dummy */ -} - /* 15.3.1.2.2 */ /* 15.3.1.2.5 */ /* 15.3.1.3.6 */ @@ -302,7 +296,18 @@ mrb_f_block_given_p(void) static mrb_value mrb_f_block_given_p_m(mrb_state *mrb, mrb_value self) { - return mrb_f_block_given_p(); + mrb_callinfo *ci = mrb->ci; + mrb_value *bp, *p; + + p = mrb->stbase + ci->stackidx; + bp = mrb->stbase + ci->stackidx + 1; + ci--; + if (ci <= mrb->cibase) return mrb_false_value(); + if (ci->argc > 0) { + bp += ci->argc; + } + if (mrb_nil_p(*bp)) return mrb_false_value(); + return mrb_true_value(); } /* 15.3.1.3.7 */ diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 847f1baeb..5e25d6516 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -6,7 +6,14 @@ assert('Kernel', '15.3.1') do end assert('Kernel.block_given?', '15.3.1.2.2') do - Kernel.block_given? == false + def bg_try(&b) + if block_given? + yield + else + "no block" + end + end + (Kernel.block_given? == false) && (bg_try == "no block") && ((bg_try { "block" }) == "block") && ((bg_try do "block" end) == "block") end assert('Kernel.global_variables', '15.3.1.2.4') do -- cgit v1.2.3 From 1a7bdcf156d5a150bb0a24905970b0c6065c36ae Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Tue, 19 Jun 2012 16:48:31 +0900 Subject: remove local_variables test --- test/t/kernel.rb | 8 -------- 1 file changed, 8 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 5e25d6516..ba708dbb7 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -32,10 +32,6 @@ assert('Kernel.lambda', '15.3.1.2.6') do l.call and l.class == Proc end -assert('Kernel.local_variables', '15.3.1.2.7') do - Kernel.local_variables.class == Array -end - assert('Kernel.loop', '15.3.1.2.8') do i = 0 @@ -79,10 +75,6 @@ assert('Kernel#hash', '15.3.1.2.15') do hash == hash end -assert('Kernel#local_variables', '15.3.1.2.28') do - local_variables.class == Array -end - assert('Kernel#loop', '15.3.1.2.29') do i = 0 -- cgit v1.2.3 From 062e96960d078cb5bca48ba3b878f681871be72a Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Fri, 22 Jun 2012 01:31:33 +0900 Subject: Add sample test for Kernel#clone and Kernel#dup. --- test/t/kernel.rb | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index ba708dbb7..6531383e5 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -71,6 +71,62 @@ assert('Kernel.raise', '15.3.1.2.12') do e_list[0].class == RuntimeError end +assert('Kernel#clone', '15.3.1.3.8') do + class KernelCloneTest + def initialize + @v = 0 + end + + def get + @v + end + + def set(v) + @v = v + end + end + + a = KernelCloneTest.new + a.set(1) + b = a.clone + + def a.test + end + a.set(2) + c = a.clone + + a.get == 2 && b.get == 1 && c.get == 2 && + a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == true +end + +assert('Kernel#dup', '15.3.1.3.9') do + class KernelDupTest + def initialize + @v = 0 + end + + def get + @v + end + + def set(v) + @v = v + end + end + + a = KernelDupTest.new + a.set(1) + b = a.dup + + def a.test + end + a.set(2) + c = a.dup + + a.get == 2 && b.get == 1 && c.get == 2 && + a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == false +end + assert('Kernel#hash', '15.3.1.2.15') do hash == hash end -- cgit v1.2.3 From ccde2d3be08d215f235e7a1820ab98ddb769abe6 Mon Sep 17 00:00:00 2001 From: Yukihiro Matsumoto Date: Sun, 24 Jun 2012 22:30:56 +0900 Subject: update ISO chapter number in test/t/kernel.rb --- test/t/kernel.rb | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 6531383e5..c1f42e420 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -127,11 +127,11 @@ assert('Kernel#dup', '15.3.1.3.9') do a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == false end -assert('Kernel#hash', '15.3.1.2.15') do +assert('Kernel#hash', '15.3.1.3.15') do hash == hash end -assert('Kernel#loop', '15.3.1.2.29') do +assert('Kernel#loop', '15.3.1.3.29') do i = 0 loop do @@ -142,32 +142,31 @@ assert('Kernel#loop', '15.3.1.2.29') do i == 100 end -assert('Kernel#methods', '15.3.1.2.31') do +assert('Kernel#methods', '15.3.1.3.31') do methods.class == Array end -assert('Kernel#nil?', '15.3.1.2.32') do - # TODO why is Kernel nil ???? - nil? == true +assert('Kernel#nil?', '15.3.1.3.32') do + nil.nil? == true end -assert('Kernel#private_methods', '15.3.1.2.36') do - private_methods.class == Array +assert('Kernel#private_methods', '15.3.1.3.36') do + private_methods.class == Array end -assert('Kernel#protected_methods', '15.3.1.2.37') do +assert('Kernel#protected_methods', '15.3.1.3.37') do protected_methods.class == Array end -assert('Kernel#public_methods', '15.3.1.2.38') do +assert('Kernel#public_methods', '15.3.1.3.38') do public_methods.class == Array end -assert('Kernel#respond_to?', '15.3.1.2.43') do +assert('Kernel#respond_to?', '15.3.1.3.43') do respond_to? :nil? end -assert('Kernel#send', '15.3.1.2.44') do +assert('Kernel#send', '15.3.1.3.44') do # test with block l = send(:lambda) do true @@ -179,11 +178,11 @@ assert('Kernel#send', '15.3.1.2.44') do send(:public_methods).class == Array end -assert('Kernel#singleton_methods', '15.3.1.2.45') do +assert('Kernel#singleton_methods', '15.3.1.3.45') do singleton_methods.class == Array end -assert('Kernel#to_s', '15.3.1.2.46') do +assert('Kernel#to_s', '15.3.1.3.46') do # TODO looks strange.. to_s == '' end -- cgit v1.2.3 From d3bf659bfd633aa6a6fbb5045df4289c809f03dc Mon Sep 17 00:00:00 2001 From: Daniel Bovensiepen Date: Wed, 27 Jun 2012 03:06:07 +0800 Subject: Add more kernel tests --- test/t/kernel.rb | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 9 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index c1f42e420..d11e256a6 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -7,13 +7,20 @@ end assert('Kernel.block_given?', '15.3.1.2.2') do def bg_try(&b) - if block_given? + if Kernel.block_given? yield else "no block" end end - (Kernel.block_given? == false) && (bg_try == "no block") && ((bg_try { "block" }) == "block") && ((bg_try do "block" end) == "block") + + (Kernel.block_given? == false) and + # test without block + (bg_try == "no block") and + # test with block + ((bg_try { "block" }) == "block") and + # test with block + ((bg_try do "block" end) == "block") end assert('Kernel.global_variables', '15.3.1.2.4') do @@ -32,6 +39,11 @@ assert('Kernel.lambda', '15.3.1.2.6') do l.call and l.class == Proc end +# Not implemented at the moment +#assert('Kernel.local_variables', '15.3.1.2.7') do +# Kernel.local_variables.class == Array +#end + assert('Kernel.loop', '15.3.1.2.8') do i = 0 @@ -58,17 +70,61 @@ assert('Kernel.puts', '15.3.1.2.11') do true end -# TODO fails at the moment without arguments assert('Kernel.raise', '15.3.1.2.12') do e_list = [] begin - raise RuntimeError.new + Kernel.raise + rescue => e + e_list << e + end + + begin + Kernel.raise RuntimeError.new rescue => e e_list << e end - e_list[0].class == RuntimeError + # result without argument + e_list[0].class == RuntimeError and + # result with RuntimeError argument + e_list[1].class == RuntimeError +end + +assert('Kernel#__id__', '15.3.1.3.3') do + __id__.class == Fixnum +end + +assert('Kernel#__send__', '15.3.1.3.4') do + # test with block + l = __send__(:lambda) do + true + end + + l.call and l.class == Proc and + # test with argument + __send__(:respond_to?, :nil?) and + # test without argument and without block + __send__(:public_methods).class == Array +end + +assert('Kernel#block_given?', '15.3.1.3.6') do + def bg_try(&b) + if block_given? + yield + else + "no block" + end + end + + (block_given? == false) and + (bg_try == "no block") and + ((bg_try { "block" }) == "block") and + ((bg_try do "block" end) == "block") +end + +assert('Kernel#class', '15.3.1.3.7') do + Kernel.class == Module end assert('Kernel#clone', '15.3.1.3.8') do @@ -95,8 +151,10 @@ assert('Kernel#clone', '15.3.1.3.8') do a.set(2) c = a.clone - a.get == 2 && b.get == 1 && c.get == 2 && - a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == true + a.get == 2 and b.get == 1 and c.get == 2 && + a.respond_to?(:test) == true and + b.respond_to?(:test) == false and + c.respond_to?(:test) == true end assert('Kernel#dup', '15.3.1.3.9') do @@ -123,14 +181,53 @@ assert('Kernel#dup', '15.3.1.3.9') do a.set(2) c = a.dup - a.get == 2 && b.get == 1 && c.get == 2 && - a.respond_to?(:test) == true && b.respond_to?(:test) == false && c.respond_to?(:test) == false + a.get == 2 and b.get == 1 and c.get == 2 and + a.respond_to?(:test) == true and + b.respond_to?(:test) == false and + c.respond_to?(:test) == false +end + +assert('global_variables', '15.3.1.3.14') do + global_variables.class == Array end assert('Kernel#hash', '15.3.1.3.15') do hash == hash end +assert('inspect', '15.3.1.3.17') do + inspect.class == String +end + +assert('Kernel#instance_variables', '15.3.1.3.23') do + instance_variables.class == Array +end + +assert('Kernel#is_a?', '15.3.1.3.24') do + is_a?(Kernel) and not is_a?(Array) +end + +assert('Kernel#iterator?', '15.3.1.3.25') do + iterator? == false +end + +assert('Kernel#kind_of?', '15.3.1.3.26') do + kind_of?(Kernel) and not kind_of?(Array) +end + +assert('Kernel#lambda', '15.3.1.3.27') do + l = lambda do + true + end + + l.call and l.class == Proc +end + +# Not implemented yet +#assert('Kernel#local_variables', '15.3.1.3.28') do +# local_variables.class == Array +#end + assert('Kernel#loop', '15.3.1.3.29') do i = 0 @@ -150,6 +247,10 @@ assert('Kernel#nil?', '15.3.1.3.32') do nil.nil? == true end +assert('Kernel#object_id', '15.3.1.3.33') do + object_id.class == Fixnum +end + assert('Kernel#private_methods', '15.3.1.3.36') do private_methods.class == Array end @@ -162,6 +263,27 @@ assert('Kernel#public_methods', '15.3.1.3.38') do public_methods.class == Array end +assert('Kernel.raise', '15.3.1.3.40') do + e_list = [] + + begin + raise + rescue => e + e_list << e + end + + begin + raise RuntimeError.new + rescue => e + e_list << e + end + + # result without argument + e_list[0].class == RuntimeError and + # result with RuntimeError argument + e_list[1].class == RuntimeError +end + assert('Kernel#respond_to?', '15.3.1.3.43') do respond_to? :nil? end @@ -171,6 +293,7 @@ assert('Kernel#send', '15.3.1.3.44') do l = send(:lambda) do true end + l.call and l.class == Proc and # test with argument send(:respond_to?, :nil?) and -- cgit v1.2.3 From e8ad94da9338e1d0ed6acf709f611e6830b16621 Mon Sep 17 00:00:00 2001 From: Daniel Bovensiepen Date: Wed, 27 Jun 2012 03:12:37 +0800 Subject: Fix kernel test descriptions --- test/t/kernel.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index d11e256a6..5aa7672d7 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -187,7 +187,7 @@ assert('Kernel#dup', '15.3.1.3.9') do c.respond_to?(:test) == false end -assert('global_variables', '15.3.1.3.14') do +assert('Kernel#global_variables', '15.3.1.3.14') do global_variables.class == Array end @@ -195,7 +195,7 @@ assert('Kernel#hash', '15.3.1.3.15') do hash == hash end -assert('inspect', '15.3.1.3.17') do +assert('Kernel#inspect', '15.3.1.3.17') do inspect.class == String end @@ -263,7 +263,7 @@ assert('Kernel#public_methods', '15.3.1.3.38') do public_methods.class == Array end -assert('Kernel.raise', '15.3.1.3.40') do +assert('Kernel#raise', '15.3.1.3.40') do e_list = [] begin -- cgit v1.2.3 From 8020c280aa88354d797bdaf754c7beeb42dabab4 Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Tue, 17 Jul 2012 00:56:18 +0900 Subject: Add test for Kernel#extend. --- test/t/kernel.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 5aa7672d7..4f1d2b42f 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -187,6 +187,21 @@ assert('Kernel#dup', '15.3.1.3.9') do c.respond_to?(:test) == false end +assert('Kernel#extend', '15.3.1.3.13') do + class Test4ExtendClass + end + + module Test4ExtendModule + def test_method; end + end + + a = Test4ExtendClass.new + a.extend(Test4ExtendModule) + b = Test4ExtendClass.new + + a.respond_to?(:test_method) == true && b.respond_to?(:test_method) == false +end + assert('Kernel#global_variables', '15.3.1.3.14') do global_variables.class == Array end -- cgit v1.2.3 From 6f2aefae1f6032be5c7a7ba82734543b90be5ccc Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Wed, 18 Jul 2012 02:23:16 +0900 Subject: Add test for 'respond_to?'. --- test/t/kernel.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 4f1d2b42f..6e68b1b22 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -300,7 +300,12 @@ assert('Kernel#raise', '15.3.1.3.40') do end assert('Kernel#respond_to?', '15.3.1.3.43') do - respond_to? :nil? + class Test4RespondTo + def test_method; end + undef test_method + end + + respond_to?(:nil?) and Test4RespondTo.new.respond_to?(:test_method) == false end assert('Kernel#send', '15.3.1.3.44') do -- cgit v1.2.3 From e6f1e7b899e25c523a43fab59d7f536877bd05ce Mon Sep 17 00:00:00 2001 From: Masamitsu MURASE Date: Wed, 18 Jul 2012 02:25:34 +0900 Subject: Add tests for Kernel#lambda and Kernel.lambda. --- test/t/kernel.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'test/t/kernel.rb') diff --git a/test/t/kernel.rb b/test/t/kernel.rb index 4f1d2b42f..da818778a 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -36,7 +36,9 @@ assert('Kernel.lambda', '15.3.1.2.6') do true end - l.call and l.class == Proc + m = Kernel.lambda(&l) + + l.call and l.class == Proc and m.call and m.class == Proc end # Not implemented at the moment @@ -235,7 +237,9 @@ assert('Kernel#lambda', '15.3.1.3.27') do true end - l.call and l.class == Proc + m = lambda(&l) + + l.call and l.class == Proc and m.call and m.class == Proc end # Not implemented yet -- cgit v1.2.3