mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
233 lines
2.3 KiB
Ruby
233 lines
2.3 KiB
Ruby
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
:ng1
|
||
|
mm{
|
||
|
yield
|
||
|
}
|
||
|
:ng2
|
||
|
end
|
||
|
|
||
|
def mm
|
||
|
:ng3
|
||
|
yield
|
||
|
:ng4
|
||
|
end
|
||
|
|
||
|
m{
|
||
|
break :ok
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
3.times{
|
||
|
break :ok
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{}, %q{
|
||
|
catch(:foo){
|
||
|
throw :foo
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{false}, %q{
|
||
|
catch(:foo){
|
||
|
throw :foo, false
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{}, %q{
|
||
|
catch(:foo){
|
||
|
throw :foo, nil
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
catch(:foo){
|
||
|
throw :foo, :ok
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{}, %q{
|
||
|
catch(:foo){
|
||
|
1.times{
|
||
|
throw :foo
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
catch(:foo){
|
||
|
1.times{
|
||
|
throw :foo, :ok
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
catch(:foo){
|
||
|
catch(:bar){
|
||
|
throw :foo, :ok
|
||
|
}
|
||
|
:ng
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
catch(:foo){
|
||
|
catch(:bar){
|
||
|
1.times{
|
||
|
throw :foo, :ok
|
||
|
}
|
||
|
}
|
||
|
:ng
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{2}, %q{
|
||
|
module Enumerable
|
||
|
def all_?
|
||
|
self.each{|e|
|
||
|
unless yield(e)
|
||
|
return false
|
||
|
end
|
||
|
}
|
||
|
true
|
||
|
end
|
||
|
end
|
||
|
|
||
|
xxx = 0
|
||
|
[1,2].each{|bi|
|
||
|
[3,4].each{|bj|
|
||
|
[true, nil, true].all_?{|be| be}
|
||
|
break
|
||
|
}
|
||
|
xxx += 1
|
||
|
}
|
||
|
xxx
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
yield
|
||
|
end
|
||
|
|
||
|
m{
|
||
|
begin
|
||
|
ensure
|
||
|
break :ok
|
||
|
end
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
yield
|
||
|
:ok
|
||
|
end
|
||
|
i=0
|
||
|
m{
|
||
|
if i>10
|
||
|
i*i
|
||
|
else
|
||
|
i+=1
|
||
|
next
|
||
|
end
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
yield
|
||
|
end
|
||
|
|
||
|
m{
|
||
|
next :ok
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{131}, %q{
|
||
|
def m
|
||
|
yield + 10
|
||
|
end
|
||
|
i=0
|
||
|
m{
|
||
|
if i>10
|
||
|
i*i
|
||
|
else
|
||
|
i+=1
|
||
|
redo
|
||
|
end
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m a
|
||
|
yield
|
||
|
end
|
||
|
|
||
|
i=0
|
||
|
m(i+=1){
|
||
|
retry if i<10
|
||
|
:ok
|
||
|
}
|
||
|
}
|
||
|
assert_equal %q{3}, %q{
|
||
|
def m
|
||
|
return 3
|
||
|
end
|
||
|
m
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
:ng1
|
||
|
mm{
|
||
|
return :ok
|
||
|
}
|
||
|
:ng2
|
||
|
end
|
||
|
|
||
|
def mm
|
||
|
:ng3
|
||
|
yield
|
||
|
:ng4
|
||
|
end
|
||
|
m
|
||
|
}
|
||
|
assert_equal %q{100}, %q{
|
||
|
$i = 0
|
||
|
def m
|
||
|
begin
|
||
|
iter{
|
||
|
return
|
||
|
}
|
||
|
ensure
|
||
|
$i = 100
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def iter
|
||
|
yield
|
||
|
end
|
||
|
m
|
||
|
$i
|
||
|
}
|
||
|
assert_equal %q{ok}, %q{
|
||
|
def m
|
||
|
begin
|
||
|
raise
|
||
|
rescue
|
||
|
return :ok
|
||
|
end
|
||
|
:ng
|
||
|
end
|
||
|
m
|
||
|
}
|
||
|
assert_equal %q{1}, %q{
|
||
|
def m
|
||
|
begin
|
||
|
raise
|
||
|
rescue
|
||
|
return 1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
m
|
||
|
}
|
||
|
assert_equal %q{1}, %q{
|
||
|
def m
|
||
|
begin
|
||
|
#
|
||
|
ensure
|
||
|
return 1
|
||
|
end
|
||
|
end
|
||
|
|
||
|
m
|
||
|
}
|