From caa535286d7442ddcbc1caf9fb2778efd435c56d Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 27 Jun 2007 16:26:31 +0000 Subject: * bootstraptest/runner.rb: fix to show file name. * bootstraptest/test_*.rb: add bootstarp tests. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- bootstraptest/test_block.rb | 337 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 bootstraptest/test_block.rb (limited to 'bootstraptest/test_block.rb') diff --git a/bootstraptest/test_block.rb b/bootstraptest/test_block.rb new file mode 100644 index 0000000000..e20f5937d7 --- /dev/null +++ b/bootstraptest/test_block.rb @@ -0,0 +1,337 @@ +assert_equal %q{1}, %q{ + 1.times{ + begin + a = 1 + ensure + foo = nil + end + } +} +assert_equal %q{2}, %q{ + [1,2,3].find{|x| x == 2} +} +assert_equal %q{2}, %q{ + class E + include Enumerable + def each(&block) + [1, 2, 3].each(&block) + end + end + E.new.find {|x| x == 2 } +} +assert_equal %q{6}, %q{ + sum = 0 + for x in [1, 2, 3] + sum += x + end + sum +} +assert_equal %q{15}, %q{ + sum = 0 + for x in (1..5) + sum += x + end + sum +} +assert_equal %q{0}, %q{ + sum = 0 + for x in [] + sum += x + end + sum +} +assert_equal %q{1}, %q{ + ans = [] + 1.times{ + for n in 1..3 + a = n + ans << a + end + } +} +assert_equal %q{1..3}, %q{ + ans = [] + for m in 1..3 + for n in 1..3 + a = [m, n] + ans << a + end + end +} +assert_equal %q{[1, 2, 3]}, %q{ + (1..3).to_a +} +assert_equal %q{[4, 8, 12]}, %q{ + (1..3).map{|e| + e * 4 + } +} +assert_equal %q{[1, 2, 3]}, %q{ + class C + include Enumerable + def each + [1,2,3].each{|e| + yield e + } + end + end + + C.new.to_a +} +assert_equal %q{[4, 5, 6]}, %q{ + class C + include Enumerable + def each + [1,2,3].each{|e| + yield e + } + end + end + + C.new.map{|e| + e + 3 + } +} +assert_equal %q{100}, %q{ + def m + yield + end + def n + yield + end + + m{ + n{ + 100 + } + } +} +assert_equal %q{20}, %q{ + def m + yield 1 + end + + m{|ib| + m{|jb| + i = 20 + } + } +} +assert_equal %q{2}, %q{ + def m + yield 1 + end + + m{|ib| + m{|jb| + ib = 20 + kb = 2 + } + } +} +assert_equal %q{3}, %q{ + def iter1 + iter2{ + yield + } + end + + def iter2 + yield + end + + iter1{ + jb = 2 + iter1{ + jb = 3 + } + jb + } +} +assert_equal %q{2}, %q{ + def iter1 + iter2{ + yield + } + end + + def iter2 + yield + end + + iter1{ + jb = 2 + iter1{ + jb + } + jb + } +} +assert_equal %q{2}, %q{ + def m + yield 1 + end + m{|ib| + ib*2 + } +} +assert_equal %q{92580}, %q{ + def m + yield 12345, 67890 + end + m{|ib,jb| + ib*2+jb + } +} +assert_equal %q{[10, nil]}, %q{ + def iter + yield 10 + end + + a = nil + [iter{|a| + a + }, a] +} +assert_equal %q{21}, %q{ + def iter + yield 10 + end + + iter{|a| + iter{|a| + a + 1 + } + a + } +} +assert_equal %q{[10, 20, 30, 40, nil, nil, nil, nil]}, %q{ + def iter + yield 10, 20, 30, 40 + end + + a = b = c = d = nil + iter{|a, b, c, d| + [a, b, c, d] + } + [a, b, c, d] +} +assert_equal %q{[10, 20, 30, 40, nil, nil]}, %q{ + def iter + yield 10, 20, 30, 40 + end + + a = b = nil + iter{|a, b, c, d| + [a, b, c, d] + } + [a, b] +} +assert_equal %q{[1]}, %q{ + $a = [] + + def iter + yield 1 + end + + def m + x = iter{|x| + $a << x + y = 0 + } + end + m + $a +} +assert_equal %q{[1, [2]]}, %q{ + def iter + yield 1, 2 + end + + iter{|a, *b| + [a, b] + } +} +assert_equal %q{[[1, 2]]}, %q{ + def iter + yield 1, 2 + end + + iter{|*a| + [a] + } +} +assert_equal %q{[1, 2, []]}, %q{ + def iter + yield 1, 2 + end + + iter{|a, b, *c| + [a, b, c] + } +} +assert_equal %q{[1, 2, nil, []]}, %q{ + def iter + yield 1, 2 + end + + iter{|a, b, c, *d| + [a, b, c, d] + } +} +assert_equal %q{1}, %q{ + def m + yield + end + m{ + 1 + } +} +assert_equal %q{15129}, %q{ + def m + yield 123 + end + m{|ib| + m{|jb| + ib*jb + } + } +} +assert_equal %q{2}, %q{ + def m a + yield a + end + m(1){|ib| + m(2){|jb| + ib*jb + } + } +} +assert_equal %q{9}, %q{ + sum = 0 + 3.times{|ib| + 2.times{|jb| + sum += ib + jb + }} + sum +} +assert_equal %q{10}, %q{ + 3.times{|bl| + break 10 + } +} +assert_equal %q{[1, 2]}, %q{ + def iter + yield 1,2,3 + end + + iter{|i, j| + [i, j] + } +} +assert_equal %q{[1, nil]}, %q{ + def iter + yield 1 + end + + iter{|i, j| + [i, j] + } +} -- cgit v1.2.3