From dedd3e76dc2ab71bbe9ae97604f258a0183a2d02 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Mon, 12 Feb 2007 23:01:19 +0000 Subject: set svn:eol-style git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- yarvtest/test_method.rb | 1212 +++++++++++++++++++++++------------------------ 1 file changed, 606 insertions(+), 606 deletions(-) (limited to 'yarvtest/test_method.rb') diff --git a/yarvtest/test_method.rb b/yarvtest/test_method.rb index 249211c2e..6e5217aaf 100644 --- a/yarvtest/test_method.rb +++ b/yarvtest/test_method.rb @@ -1,606 +1,606 @@ -require 'yarvtest/yarvtest' -class TestMethod < YarvTestBase - - def test_simple_method - ae %q{ - def m_simple_method - 1 - end - m_simple_method() - } - end - - def test_polymorphic - ae %q{ - o1 = 'str' - o2 = 1 - str = '' - i = 1 - while i<10 - i+=1 - o = (i%2==0) ? o1 : o2 - str += o.to_s - end - str - } - end - - def test_arg - ae <<-'EOS' - def m_arg(a1, a2) - a1+a2 - end - m_arg(1,2) - EOS - end - - def test_rec - ae <<-'EOS' - def m_rec n - if n > 1 - n + m_rec(n-1) - else - 1 - end - end - m_rec(10) - EOS - end - - def test_splat - ae %q{ - def m a - a - end - begin - m(*1) - rescue TypeError - :ok - end - } - ae %q{ - def m a, b - [a, b] - end - m(*[1,2]) - } - ae %q{ - def m a, b, c - [a, b, c] - end - m(1, *[2, 3]) - } - - ae %q{ - def m a, b, c - [a, b, c] - end - - m(1, 2, *[3]) - } - end - - def test_rest - ae %q{ - def m *a - a - end - - m - } - - ae %q{ - def m *a - a - end - - m 1 - } - - ae %q{ - def m *a - a - end - - m 1, 2, 3 - } - - ae %q{ - def m x, *a - [x, a] - end - - m 1 - } - - ae %q{ - def m x, *a - [x, a] - end - - m 1, 2 - } - - ae %q{ - def m x, *a - [x, a] - end - - m 1, 2, 3, 4 - } - end - - def test_opt - ae %q{ - def m a=1 - a - end - m - } - ae %q{ - def m a=1 - a - end - m 2 - } - ae %q{ - def m a=1, b=2 - [a, b] - end - m - } - ae %q{ - def m a=1, b=2 - [a, b] - end - m 10 - } - ae %q{ - def m a=1, b=2 - [a, b] - end - m 10, 20 - } - ae %q{ - def m x, a=1, b=2 - [x, a, b] - end - m 10 - } - ae %q{ - def m x, a=1, b=2 - [x, a, b] - end - m 10, 20 - } - ae %q{ - def m x, a=1, b=2 - [x, a, b] - end - m 10, 20, 30 - } - ae %q{ - def m x, y, a - [x, y, a] - end - m 10, 20, 30 - } - end - - - def test_opt_rest - ae %q{ - def m0 b = 0, c = 1, *d - [:sep, b, c, d] - end - - def m1 a, b = 0, c = 1, *d - [:sep, a, b, c, d] - end - - def m2 x, a, b = 0, c = 1, *d - [:sep, x, a, b, c, d] - end - - def m3 x, y, a, b = 0, c = 1, *d - [:sep, x, y, a, b, c, d] - end - - def s3 x, y, a, b = 0, c = 1 - [:sep, x, y, a, b, c] - end - - m0() + - m0(:a) + - m0(:a, :b) + - m0(:a, :b, :c) + - m0(:a, :b, :c, :d) + - m0(:a, :b, :c, :d, :e) + - m1(:a) + - m1(:a, :b) + - m1(:a, :b, :c) + - m1(:a, :b, :c, :d) + - m1(:a, :b, :c, :d, :e) + - m2(:a, :b) + - m2(:a, :b, :c) + - m2(:a, :b, :c, :d) + - m2(:a, :b, :c, :d, :e) + - m2(:a, :b, :c, :d, :e, :f) + - m3(:a, :b, :c) + - m3(:a, :b, :c, :d) + - m3(:a, :b, :c, :d, :e) + - m3(:a, :b, :c, :d, :e, :f) + - m3(:a, :b, :c, :d, :e, :f, :g) - } - end - - def test_opt_rest_block - ae %q{ - def m a, b = 0, c = 1, *d, &pr - [a, b, c, d, pr] - end - m(:a) + - m(:a, :b) + - m(:a, :b, :c) + - m(:a, :b, :c, :d) + - m(:a, :b, :c, :d, :e) - } - ae %q{ - def m a, b = 0, c = 1, *d, &pr - [a, b, c, d, pr.call] - end - - m(:a){1} + - m(:a, :b){2} + - m(:a, :b, :c){3} + - m(:a, :b, :c, :d){4} + - m(:a, :b, :c, :d, :e){5} - } - end - - def test_singletonmethod - ae %q{ - lobj = Object.new - def lobj.m - :singleton - end - lobj.m - } - ae %q{ - class C - def m - :C_m - end - end - lobj = C.new - def lobj.m - :Singleton_m - end - lobj.m - } - end - - def test_singletonmethod_with_const - ae %q{ - class C - Const = :C - def self.m - 1.times{ - Const - } - end - end - C.m - } - end - - def test_alias - ae %q{ - def m1 - :ok - end - alias :m2 :m1 - m1 - } - ae %q{ - def m1 - :ok - end - alias m2 m1 - m1 - } - ae %q{ - def m1 - :ok - end - alias m2 :m1 - m1 - } - ae %q{ - def m1 - :ok - end - alias :m2 m1 - m1 - } - ae %q{ - def m1 - :ok - end - alias m2 m1 - def m1 - :ok2 - end - [m1, m2] - } - end - - def test_split - ae %q{ - 'abc'.split(/b/) - } - ae %q{ - 1.times{|bi| - 'abc'.split(/b/) - } - } - end - - def test_block_pass - ae %q{ - def getproc &b - b - end - def m - yield - end - m(&getproc{ - "test" - }) - } - ae %q{ - def getproc &b - b - end - def m a - yield a - end - m(123, &getproc{|block_a| - block_a - }) - } - ae %q{ - def getproc &b - b - end - def m *a - yield a - end - m(123, 456, &getproc{|block_a| - block_a - }) - } - ae %q{ - def getproc &b - b - end - [1,2,3].map(&getproc{|block_e| block_e*block_e}) - } - ae %q{ - def m a, b, &c - c.call(a, b) - end - m(10, 20){|x, y| - [x+y, x*y] - } - } - ae %q{ - def m &b - b - end - m(&nil) - } - ae %q{ - def m a, &b - [a, b] - end - m(1, &nil) - } - ae %q{ - def m a - [a, block_given?] - end - m(1, &nil) - } - end - - def test_method_missing - ae %q{ - class C - def method_missing id - id - end - end - C.new.hoge - } do - remove_const :C - end - - ae %q{ - class C - def method_missing *args, &b - b.call(args) - end - end - C.new.foo(1){|args| - args - } - C.new.foo(1){|args| - args - } + - C.new.foo(1, 2){|args| - args - } - } - end - - def test_svar - ae %q{ - 'abc'.match(/a(b)c/) - $1 - } - end - - def test_nested_method - ae %q{ - class A - def m - def m2 - p :m2 - end - m2() - end - end - A.new.m - } - ae %q{ - class A - def m - def m2 - p :m2 - end - m2() - end - end - instance_eval('A.new.m') - } - end - - def test_private_class_method - ae %q{ - class C - def self.m - :ok - end - def self.test - m - end - private_class_method :m - end - C.test - } - end - - def test_alias_and_private - ae %q{ # [yarv-dev:899] - $ans = [] - class C - def m - $ans << "OK" - end - end - C.new.m - class C - alias mm m - private :mm - end - C.new.m - begin - C.new.mm - rescue NoMethodError - $ans << "OK!" - end - $ans - } - end - - def test_break_from_defined_method - ae %q{ - class C - define_method(:foo){ - break :ok - } - end - C.new.foo - } - end - - def test_return_from_defined_method - ae %q{ - class C - define_method(:m){ - return :ok - } - end - C.new.m - } - end - - def test_send - ae %q{ - $r = [] - class C - def m *args - $r << "C#m #{args.inspect} #{block_given?}" - end - end - - obj = C.new - obj.send :m - obj.send :m, :x - obj.send :m, :x, :y - obj.send(:m){} - obj.send(:m, :x){} - $r - } - ae %q{ - class C - def send - :ok - end - end - C.new.send - } - end - - def test_send_with_private - ae %q{ - begin - def m - end - self.send :m - rescue NoMethodError - :ok - else - :ng - end - } - ae %q{ - begin - def m - end - send :m - rescue NoMethodError - :ng - else - :ok - end - } - end - - def test_funcall - ae %q{ - $r = [] - def m *args - $r << "m() #{args.inspect} #{block_given?}" - end - - funcall :m - funcall :m, :x - funcall :m, :x, :y - funcall(:m){} - funcall(:m, :x){} - } - end -end - +require 'yarvtest/yarvtest' +class TestMethod < YarvTestBase + + def test_simple_method + ae %q{ + def m_simple_method + 1 + end + m_simple_method() + } + end + + def test_polymorphic + ae %q{ + o1 = 'str' + o2 = 1 + str = '' + i = 1 + while i<10 + i+=1 + o = (i%2==0) ? o1 : o2 + str += o.to_s + end + str + } + end + + def test_arg + ae <<-'EOS' + def m_arg(a1, a2) + a1+a2 + end + m_arg(1,2) + EOS + end + + def test_rec + ae <<-'EOS' + def m_rec n + if n > 1 + n + m_rec(n-1) + else + 1 + end + end + m_rec(10) + EOS + end + + def test_splat + ae %q{ + def m a + a + end + begin + m(*1) + rescue TypeError + :ok + end + } + ae %q{ + def m a, b + [a, b] + end + m(*[1,2]) + } + ae %q{ + def m a, b, c + [a, b, c] + end + m(1, *[2, 3]) + } + + ae %q{ + def m a, b, c + [a, b, c] + end + + m(1, 2, *[3]) + } + end + + def test_rest + ae %q{ + def m *a + a + end + + m + } + + ae %q{ + def m *a + a + end + + m 1 + } + + ae %q{ + def m *a + a + end + + m 1, 2, 3 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1, 2 + } + + ae %q{ + def m x, *a + [x, a] + end + + m 1, 2, 3, 4 + } + end + + def test_opt + ae %q{ + def m a=1 + a + end + m + } + ae %q{ + def m a=1 + a + end + m 2 + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m 10 + } + ae %q{ + def m a=1, b=2 + [a, b] + end + m 10, 20 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10, 20 + } + ae %q{ + def m x, a=1, b=2 + [x, a, b] + end + m 10, 20, 30 + } + ae %q{ + def m x, y, a + [x, y, a] + end + m 10, 20, 30 + } + end + + + def test_opt_rest + ae %q{ + def m0 b = 0, c = 1, *d + [:sep, b, c, d] + end + + def m1 a, b = 0, c = 1, *d + [:sep, a, b, c, d] + end + + def m2 x, a, b = 0, c = 1, *d + [:sep, x, a, b, c, d] + end + + def m3 x, y, a, b = 0, c = 1, *d + [:sep, x, y, a, b, c, d] + end + + def s3 x, y, a, b = 0, c = 1 + [:sep, x, y, a, b, c] + end + + m0() + + m0(:a) + + m0(:a, :b) + + m0(:a, :b, :c) + + m0(:a, :b, :c, :d) + + m0(:a, :b, :c, :d, :e) + + m1(:a) + + m1(:a, :b) + + m1(:a, :b, :c) + + m1(:a, :b, :c, :d) + + m1(:a, :b, :c, :d, :e) + + m2(:a, :b) + + m2(:a, :b, :c) + + m2(:a, :b, :c, :d) + + m2(:a, :b, :c, :d, :e) + + m2(:a, :b, :c, :d, :e, :f) + + m3(:a, :b, :c) + + m3(:a, :b, :c, :d) + + m3(:a, :b, :c, :d, :e) + + m3(:a, :b, :c, :d, :e, :f) + + m3(:a, :b, :c, :d, :e, :f, :g) + } + end + + def test_opt_rest_block + ae %q{ + def m a, b = 0, c = 1, *d, &pr + [a, b, c, d, pr] + end + m(:a) + + m(:a, :b) + + m(:a, :b, :c) + + m(:a, :b, :c, :d) + + m(:a, :b, :c, :d, :e) + } + ae %q{ + def m a, b = 0, c = 1, *d, &pr + [a, b, c, d, pr.call] + end + + m(:a){1} + + m(:a, :b){2} + + m(:a, :b, :c){3} + + m(:a, :b, :c, :d){4} + + m(:a, :b, :c, :d, :e){5} + } + end + + def test_singletonmethod + ae %q{ + lobj = Object.new + def lobj.m + :singleton + end + lobj.m + } + ae %q{ + class C + def m + :C_m + end + end + lobj = C.new + def lobj.m + :Singleton_m + end + lobj.m + } + end + + def test_singletonmethod_with_const + ae %q{ + class C + Const = :C + def self.m + 1.times{ + Const + } + end + end + C.m + } + end + + def test_alias + ae %q{ + def m1 + :ok + end + alias :m2 :m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 :m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias :m2 m1 + m1 + } + ae %q{ + def m1 + :ok + end + alias m2 m1 + def m1 + :ok2 + end + [m1, m2] + } + end + + def test_split + ae %q{ + 'abc'.split(/b/) + } + ae %q{ + 1.times{|bi| + 'abc'.split(/b/) + } + } + end + + def test_block_pass + ae %q{ + def getproc &b + b + end + def m + yield + end + m(&getproc{ + "test" + }) + } + ae %q{ + def getproc &b + b + end + def m a + yield a + end + m(123, &getproc{|block_a| + block_a + }) + } + ae %q{ + def getproc &b + b + end + def m *a + yield a + end + m(123, 456, &getproc{|block_a| + block_a + }) + } + ae %q{ + def getproc &b + b + end + [1,2,3].map(&getproc{|block_e| block_e*block_e}) + } + ae %q{ + def m a, b, &c + c.call(a, b) + end + m(10, 20){|x, y| + [x+y, x*y] + } + } + ae %q{ + def m &b + b + end + m(&nil) + } + ae %q{ + def m a, &b + [a, b] + end + m(1, &nil) + } + ae %q{ + def m a + [a, block_given?] + end + m(1, &nil) + } + end + + def test_method_missing + ae %q{ + class C + def method_missing id + id + end + end + C.new.hoge + } do + remove_const :C + end + + ae %q{ + class C + def method_missing *args, &b + b.call(args) + end + end + C.new.foo(1){|args| + args + } + C.new.foo(1){|args| + args + } + + C.new.foo(1, 2){|args| + args + } + } + end + + def test_svar + ae %q{ + 'abc'.match(/a(b)c/) + $1 + } + end + + def test_nested_method + ae %q{ + class A + def m + def m2 + p :m2 + end + m2() + end + end + A.new.m + } + ae %q{ + class A + def m + def m2 + p :m2 + end + m2() + end + end + instance_eval('A.new.m') + } + end + + def test_private_class_method + ae %q{ + class C + def self.m + :ok + end + def self.test + m + end + private_class_method :m + end + C.test + } + end + + def test_alias_and_private + ae %q{ # [yarv-dev:899] + $ans = [] + class C + def m + $ans << "OK" + end + end + C.new.m + class C + alias mm m + private :mm + end + C.new.m + begin + C.new.mm + rescue NoMethodError + $ans << "OK!" + end + $ans + } + end + + def test_break_from_defined_method + ae %q{ + class C + define_method(:foo){ + break :ok + } + end + C.new.foo + } + end + + def test_return_from_defined_method + ae %q{ + class C + define_method(:m){ + return :ok + } + end + C.new.m + } + end + + def test_send + ae %q{ + $r = [] + class C + def m *args + $r << "C#m #{args.inspect} #{block_given?}" + end + end + + obj = C.new + obj.send :m + obj.send :m, :x + obj.send :m, :x, :y + obj.send(:m){} + obj.send(:m, :x){} + $r + } + ae %q{ + class C + def send + :ok + end + end + C.new.send + } + end + + def test_send_with_private + ae %q{ + begin + def m + end + self.send :m + rescue NoMethodError + :ok + else + :ng + end + } + ae %q{ + begin + def m + end + send :m + rescue NoMethodError + :ng + else + :ok + end + } + end + + def test_funcall + ae %q{ + $r = [] + def m *args + $r << "m() #{args.inspect} #{block_given?}" + end + + funcall :m + funcall :m, :x + funcall :m, :x, :y + funcall(:m){} + funcall(:m, :x){} + } + end +end + -- cgit