* transcode.c (econv_init): accept Encoding object as source_encoding
[ruby-svn.git] / bootstraptest / test_jump.rb
blob77467337c2a5c94ca1ac2cd6018f2f58f285ffc8
1 assert_equal %q{ok}, %q{
2   def m
3     :ng1
4     mm{
5       yield
6     }
7     :ng2
8   end
10   def mm
11     :ng3
12     yield
13     :ng4
14   end
16   m{
17     break :ok
18   }
20 assert_equal %q{ok}, %q{
21   3.times{
22     break :ok
23   }
25 assert_equal %q{}, %q{
26   catch(:foo){
27     throw :foo
28   }
30 assert_equal %q{false}, %q{
31   catch(:foo){
32     throw :foo, false
33   }
35 assert_equal %q{}, %q{
36   catch(:foo){
37     throw :foo, nil
38   }
40 assert_equal %q{ok}, %q{
41   catch(:foo){
42     throw :foo, :ok
43   }
45 assert_equal %q{}, %q{
46   catch(:foo){
47     1.times{
48       throw :foo
49     }
50   }
52 assert_equal %q{ok}, %q{
53   catch(:foo){
54     1.times{
55       throw :foo, :ok
56     }
57   }
59 assert_equal %q{ok}, %q{
60   catch(:foo){
61     catch(:bar){
62       throw :foo, :ok
63     }
64     :ng
65   }
67 assert_equal %q{ok}, %q{
68   catch(:foo){
69     catch(:bar){
70       1.times{
71         throw :foo, :ok
72       }
73     }
74     :ng
75   }
77 assert_equal %q{2}, %q{
78   module Enumerable
79     def all_?
80       self.each{|e|
81         unless yield(e)
82           return false
83         end
84       }
85       true
86     end
87   end
89   xxx = 0
90   [1,2].each{|bi|
91     [3,4].each{|bj|
92       [true, nil, true].all_?{|be| be}
93       break
94     }
95     xxx += 1
96   }
97   xxx
99 assert_equal %q{ok}, %q{
100   def m
101     yield
102   end
103   
104   m{
105     begin
106     ensure
107       break :ok
108     end
109   }
111 assert_equal %q{ok}, %q{
112   def m
113     yield
114     :ok
115   end
116   i=0
117   m{
118     if i>10
119       i*i
120     else
121       i+=1
122       next
123     end
124   }
126 assert_equal %q{ok}, %q{
127   def m
128     yield
129   end
131   m{
132     next :ok
133   }
135 assert_equal %q{131}, %q{
136   def m
137     yield + 10
138   end
139   i=0
140   m{
141     if i>10
142       i*i
143     else
144       i+=1
145       redo
146     end
147   }
149 assert_equal %q{ok}, %q{
150 begin
151   eval %q{
152     1.times{
153       retry
154     }
155   }
156 rescue SyntaxError
157   :ok
160 assert_equal %q{3}, %q{
161   def m
162     return 3
163   end
164   m
166 assert_equal %q{ok}, %q{
167   def m
168     :ng1
169     mm{
170       return :ok
171     }
172     :ng2
173   end
175   def mm
176     :ng3
177     yield
178     :ng4
179   end
180   m
182 assert_equal %q{100}, %q{
183   $i = 0
184   def m
185     begin
186       iter{
187         return
188       }
189     ensure
190       $i = 100
191     end
192   end
193   
194   def iter
195     yield
196   end
197   m
198   $i
200 assert_equal %q{ok}, %q{
201   def m
202     begin
203       raise
204     rescue
205       return :ok
206     end
207     :ng
208   end
209   m
211 assert_equal %q{1}, %q{
212   def m
213     begin
214       raise
215     rescue
216       return 1
217     end
218   end
219   
220   m
222 assert_equal %q{1}, %q{
223   def m
224     begin
225       #
226     ensure
227       return 1
228     end
229   end
230   
231   m
233 assert_equal 'ok', %q{
234   begin
235     catch {|t| throw t, :ok }
236   rescue ArgumentError
237     :ng
238   end
239 }, '[ruby-dev:31609]'
241 assert_equal "1", %q{
242   catch do |t|
243     begin
244       throw t, 1
245       2
246     ensure
247       3
248     end
249   end
250 }, "[ruby-dev:31698]"
252 assert_normal_exit %q{
253   f = 0
254   1.times do
255     begin
256       f += 1
257     ensure
258       redo unless f > 2
259     end
260   end