* io.c (rb_open_file): encoding in mode string was ignored if perm is
[ruby-svn.git] / bootstraptest / test_flow.rb
blob9964dfb2ed70ef992174a5a7b59b5cfc53a35955
1 assert_equal %q{[1, 2, 4, 5, 6, 7, 8]}, %q{$a = []; begin;  ; $a << 1
2   [1,2].each{; $a << 2
3     break; $a << 3
4   }; $a << 4
5   begin; $a << 5
6   ensure; $a << 6
7   end; $a << 7
8 ; $a << 8
9 ; rescue Exception; $a << 99; end; $a}
10 assert_equal %q{[1, 2, 3, 5, 6, 7, 8]}, %q{$a = []; begin;  ; $a << 1
11   begin; $a << 2
12     [1,2].each do; $a << 3
13       break; $a << 4
14     end; $a << 5
15   ensure; $a << 6
16   end; $a << 7
17 ; $a << 8
18 ; rescue Exception; $a << 99; end; $a}
19 assert_equal %q{ok}, %q{
20   ["a"].inject("ng"){|x,y|
21     break :ok
22   }
24 assert_equal %q{ok}, %q{
25   unless ''.respond_to? :lines
26     class String
27       def lines
28         self
29       end
30     end
31   end
32   
33   ('a').lines.map{|e|
34     break :ok
35   }
37 assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
38   ["a"].inject("ng"){|x,y|; $a << 2
39     break :ok; $a << 3
40   }; $a << 4
41 ; $a << 5
42 ; rescue Exception; $a << 99; end; $a}
43 assert_equal %q{[1, 2, 4, 5]}, %q{$a = []; begin; ; $a << 1
44   ('a'..'b').map{|e|; $a << 2
45     break :ok; $a << 3
46   }; $a << 4
47 ; $a << 5
48 ; rescue Exception; $a << 99; end; $a}
49 assert_equal %q{[1, 2, 3, 5, 7, 8]}, %q{$a = []; begin;  ; $a << 1
50   [1,2].each do; $a << 2
51     begin; $a << 3
52       break; $a << 4
53     ensure; $a << 5
54     end; $a << 6
55   end; $a << 7
56 ; $a << 8
57 ; rescue Exception; $a << 99; end; $a}
58 assert_equal %q{[1, 2, 3, 4, 5, 6, 9, 10]}, %q{$a = []; begin; ; $a << 1
59   i=0; $a << 2
60   while i<3; $a << 3
61     i+=1; $a << 4
62     begin; $a << 5
63     ensure; $a << 6
64       break; $a << 7
65     end; $a << 8
66   end; $a << 9
67 ; $a << 10
68 ; rescue Exception; $a << 99; end; $a}
69 assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
70   i=0; $a << 2
71   while i<3; $a << 3
72     i+=1; $a << 4
73     begin; $a << 5
74       raise; $a << 6
75     ensure; $a << 7
76       break; $a << 8
77     end; $a << 9
78   end; $a << 10
79 ; $a << 11
80 ; rescue Exception; $a << 99; end; $a}
81 assert_equal %q{[1, 2, 3, 4, 5, 7, 10, 11]}, %q{$a = []; begin; ; $a << 1
82   i=0; $a << 2
83   while i<3; $a << 3
84     i+=1; $a << 4
85     begin; $a << 5
86       raise; $a << 6
87     rescue; $a << 7
88       break; $a << 8
89     end; $a << 9
90   end; $a << 10
91 ; $a << 11
92 ; rescue Exception; $a << 99; end; $a}
93 assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin;  ; $a << 1
94   [1,2].each do; $a << 2
95     begin; $a << 3
96       raise StandardError; $a << 4
97     ensure; $a << 5
98       break; $a << 6
99     end; $a << 7
100   end; $a << 8
101 ; $a << 9
102 ; rescue Exception; $a << 99; end; $a}
103 assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin;  ; $a << 1
104   [1,2].each do; $a << 2
105     begin; $a << 3
106       raise StandardError; $a << 4
107     rescue; $a << 5
108       break; $a << 6
109     end; $a << 7
110   end; $a << 8
111 ; $a << 9
112 ; rescue Exception; $a << 99; end; $a}
113 assert_equal %q{[1, 2, 3, 4, 6, 8, 10, 11]}, %q{$a = []; begin;  ; $a << 1
114   [1,2].each do; $a << 2
115     begin; $a << 3
116       begin; $a << 4
117         break; $a << 5
118       ensure; $a << 6
119       end; $a << 7
120     ensure; $a << 8
121     end; $a << 9
122   end; $a << 10
123 ; $a << 11
124 ; rescue Exception; $a << 99; end; $a}
125 assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
126   i = 0; $a << 2
127   while i<3; $a << 3
128     i+=1; $a << 4
129     j = 0; $a << 5
130     while j<3; $a << 6
131       j+=1; $a << 7
132       begin; $a << 8
133         raise; $a << 9
134       rescue; $a << 10
135         break; $a << 11
136       end; $a << 12
137     end; $a << 13
138   end; $a << 14
139 ; $a << 15
140 ; rescue Exception; $a << 99; end; $a}
141 assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
142   i = 0; $a << 2
143   while i<3; $a << 3
144     i+=1; $a << 4
145     j = 0; $a << 5
146     while j<3; $a << 6
147       j+=1; $a << 7
148       1.times{; $a << 8
149         begin; $a << 9
150           raise; $a << 10
151         rescue; $a << 11
152           break; $a << 12
153         end; $a << 13
154       }; $a << 14
155     end; $a << 15
156   end; $a << 16
157 ; $a << 17
158 ; rescue Exception; $a << 99; end; $a}
159 assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 3, 4, 5, 6, 7, 8, 10, 13, 14, 15]}, %q{$a = []; begin; ; $a << 1
160   i = 0; $a << 2
161   while i<3; $a << 3
162     i+=1; $a << 4
163     j = 0; $a << 5
164     while j<3; $a << 6
165       j+=1; $a << 7
166       begin; $a << 8
167         raise; $a << 9
168       ensure; $a << 10
169         break; $a << 11
170       end; $a << 12
171     end; $a << 13
172   end; $a << 14
173 ; $a << 15
174 ; rescue Exception; $a << 99; end; $a}
175 assert_equal %q{[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 3, 4, 5, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 6, 7, 8, 9, 11, 14, 15, 16, 17]}, %q{$a = []; begin; ; $a << 1
176   i = 0; $a << 2
177   while i<3; $a << 3
178     i+=1; $a << 4
179     j = 0; $a << 5
180     while j<3; $a << 6
181       j+=1; $a << 7
182       1.times{; $a << 8
183         begin; $a << 9
184           raise; $a << 10
185         ensure; $a << 11
186           break; $a << 12
187         end; $a << 13
188       }; $a << 14
189     end; $a << 15
190   end; $a << 16
191 ; $a << 17
192 ; rescue Exception; $a << 99; end; $a}
193 assert_equal %q{[1, 2, 3, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
194   while true; $a << 2
195     begin; $a << 3
196       break; $a << 4
197     ensure; $a << 5
198       break; $a << 6
199     end; $a << 7
200   end; $a << 8
201 ; $a << 9
202 ; rescue Exception; $a << 99; end; $a}
203 assert_equal %q{[1, 2, 3, 5, 99]}, %q{$a = []; begin; ; $a << 1
204   while true; $a << 2
205     begin; $a << 3
206       break; $a << 4
207     ensure; $a << 5
208       raise; $a << 6
209     end; $a << 7
210   end; $a << 8
211 ; $a << 9
212 ; rescue Exception; $a << 99; end; $a}
213 assert_equal %q{[1, 2, 3, 4, 6, 8, 9, 10, 11]}, %q{$a = []; begin;  ; $a << 1
214   begin; $a << 2
215     [1,2].each do; $a << 3
216       begin; $a << 4
217         break; $a << 5
218       ensure; $a << 6
219       end; $a << 7
220     end; $a << 8
221   ensure; $a << 9
222   end; $a << 10
223 ; $a << 11
224 ; rescue Exception; $a << 99; end; $a}
225 assert_equal %q{[1, 2, 4, 99]}, %q{$a = []; begin; ; $a << 1
226   begin; $a << 2
227     raise StandardError; $a << 3
228   ensure; $a << 4
229   end; $a << 5
230 ; $a << 6
231 ; rescue Exception; $a << 99; end; $a}
232 assert_equal %q{[1, 2, 3, 4]}, %q{$a = []; begin;  ; $a << 1
233   begin; $a << 2
234   ensure; $a << 3
235   end ; $a << 4
236 ; rescue Exception; $a << 99; end; $a}
237 assert_equal %q{[1, 2, 3, 5, 99]}, %q{$a = []; begin;  ; $a << 1
238   [1,2].each do; $a << 2
239     begin; $a << 3
240       break; $a << 4
241     ensure; $a << 5
242       raise StandardError; $a << 6
243     end; $a << 7
244   end; $a << 8
245 ; $a << 9
246 ; rescue Exception; $a << 99; end; $a}
247 assert_equal %q{3}, %q{
248   def m a, b
249     a + b
250   end
251   m(1,
252     while true
253       break 2
254     end
255     )
257 assert_equal %q{4}, %q{
258   def m a, b
259     a + b
260   end
261   m(1,
262     (i=0; while i<2
263        i+=1
264        class C
265          next 2
266        end
267      end; 3)
268     )
270 assert_equal %q{34}, %q{
271   def m a, b
272     a+b
273   end
274   m(1, 1.times{break 3}) +
275   m(10, (1.times{next 3}; 20))
277 assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
278   3.times{; $a << 2
279     class C; $a << 3
280       break; $a << 4
281     end; $a << 5
282   }; $a << 6
283 ; $a << 7
284 ; rescue Exception; $a << 99; end; $a}
285 assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
286   3.times{; $a << 2
287     class A; $a << 3
288       class B; $a << 4
289         break; $a << 5
290       end; $a << 6
291     end; $a << 7
292   }; $a << 8
293 ; $a << 9
294 ; rescue Exception; $a << 99; end; $a}
295 assert_equal %q{[1, 2, 3, 2, 3, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
296   3.times{; $a << 2
297     class C; $a << 3
298       next; $a << 4
299     end; $a << 5
300   }; $a << 6
301 ; $a << 7
302 ; rescue Exception; $a << 99; end; $a}
303 assert_equal %q{[1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
304   3.times{; $a << 2
305     class C; $a << 3
306       class D; $a << 4
307         next; $a << 5
308       end; $a << 6
309     end; $a << 7
310   }; $a << 8
311 ; $a << 9
312 ; rescue Exception; $a << 99; end; $a}
313 assert_equal %q{[1, 2, 3, 6, 7]}, %q{$a = []; begin; ; $a << 1
314   while true; $a << 2
315     class C; $a << 3
316       break; $a << 4
317     end; $a << 5
318   end; $a << 6
319 ; $a << 7
320 ; rescue Exception; $a << 99; end; $a}
321 assert_equal %q{[1, 2, 3, 4, 8, 9]}, %q{$a = []; begin; ; $a << 1
322   while true; $a << 2
323     class C; $a << 3
324       class D; $a << 4
325         break; $a << 5
326       end; $a << 6
327     end; $a << 7
328   end; $a << 8
329 ; $a << 9
330 ; rescue Exception; $a << 99; end; $a}
331 assert_equal %q{[1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
332   i=0; $a << 2
333   while i<3; $a << 3
334     i+=1; $a << 4
335     class C; $a << 5
336       next 10; $a << 6
337     end; $a << 7
338   end; $a << 8
339 ; $a << 9
340 ; rescue Exception; $a << 99; end; $a}
341 assert_equal %q{1}, %q{
342   1.times{
343     while true
344       class C
345         begin
346           break
347         ensure
348           break
349         end
350       end
351     end
352   }
354 assert_equal %q{[1, 2, 3, 5, 2, 3, 5, 7, 8]}, %q{$a = []; begin;  ; $a << 1
355   [1,2].each do; $a << 2
356     begin; $a << 3
357       next; $a << 4
358     ensure; $a << 5
359     end; $a << 6
360   end; $a << 7
361 ; $a << 8
362 ; rescue Exception; $a << 99; end; $a}
363 assert_equal %q{[1, 2, 6, 3, 5, 7, 8]}, %q{$a = []; begin;  ; $a << 1
364   o = "test"; $a << 2
365   def o.test(a); $a << 3
366     return a; $a << 4
367   ensure; $a << 5
368   end; $a << 6
369   o.test(123); $a << 7
370 ; $a << 8
371 ; rescue Exception; $a << 99; end; $a}
372 assert_equal %q{[1, 4, 7, 5, 8, 9]}, %q{$a = []; begin; ; $a << 1
373   def m1 *args; $a << 2
374     ; $a << 3
375   end; $a << 4
376   def m2; $a << 5
377     m1(:a, :b, (return 1; :c)); $a << 6
378   end; $a << 7
379   m2; $a << 8
380 ; $a << 9
381 ; rescue Exception; $a << 99; end; $a}
382 assert_equal %q{[1, 8, 2, 3, 4, 5, 9, 10]}, %q{$a = []; begin; ; $a << 1
383   def m(); $a << 2
384     begin; $a << 3
385       2; $a << 4
386     ensure; $a << 5
387       return 3; $a << 6
388     end; $a << 7
389   end; $a << 8
390   m; $a << 9
391 ; $a << 10
392 ; rescue Exception; $a << 99; end; $a}
393 assert_equal %q{[1, 3, 11, 4, 5, 6, 7, 12, 13]}, %q{$a = []; begin; ; $a << 1
394   def m2; $a << 2
395   end; $a << 3
396   def m(); $a << 4
397     m2(begin; $a << 5
398          2; $a << 6
399        ensure; $a << 7
400          return 3; $a << 8
401        end); $a << 9
402     4; $a << 10
403   end; $a << 11
404   m(); $a << 12
405 ; $a << 13
406 ; rescue Exception; $a << 99; end; $a}
407 assert_equal %q{[1, 16, 2, 3, 4, 5, 6, 7, 10, 11, 17, 18]}, %q{$a = []; begin; ; $a << 1
408   def m; $a << 2
409     1; $a << 3
410     1.times{; $a << 4
411       2; $a << 5
412       begin; $a << 6
413         3; $a << 7
414         return; $a << 8
415         4; $a << 9
416       ensure; $a << 10
417         5; $a << 11
418       end; $a << 12
419       6; $a << 13
420     }; $a << 14
421     7; $a << 15
422   end; $a << 16
423   m(); $a << 17
424 ; $a << 18
425 ; rescue Exception; $a << 99; end; $a}
426 assert_equal %q{[:ok, :ok2, :last]}, %q{
427   a = []
428   i = 0
429   begin
430     while i < 1
431       i+=1
432       begin
433         begin
434           next
435         ensure
436           a << :ok
437         end
438       ensure
439         a << :ok2
440       end
441     end
442   ensure
443     a << :last
444   end
445   a
447 assert_equal %q{[:ok, :ok2, :last]}, %q{
448   a = []
449   i = 0
450   begin
451     while i < 1
452       i+=1
453       begin
454         begin
455           break
456         ensure
457           a << :ok
458         end
459       ensure
460         a << :ok2
461       end
462     end
463   ensure
464     a << :last
465   end
466   a
468 assert_equal %q{[:ok, :ok2, :last]}, %q{
469   a = []
470   i = 0
471   begin
472     while i < 1
473       if i>0
474         break
475       end
476       i+=1
477       begin
478         begin
479           redo
480         ensure
481           a << :ok
482         end
483       ensure
484         a << :ok2
485       end
486     end
487   ensure
488     a << :last
489   end
490   a
491    }