|
1 // Copyright 2009 the Sputnik authors. All rights reserved. |
|
2 // This code is governed by the BSD license found in the LICENSE file. |
|
3 |
|
4 /** |
|
5 * Using "try" with "catch" or "finally" statement within/without a "for-in" statement |
|
6 * |
|
7 * @path ch12/12.14/S12.14_A12_T3.js |
|
8 * @description Try statement inside loop, where use break |
|
9 */ |
|
10 |
|
11 var x; |
|
12 var mycars = new Array(); |
|
13 mycars[0] = "Saab"; |
|
14 mycars[1] = "Volvo"; |
|
15 mycars[2] = "BMW"; |
|
16 |
|
17 // CHECK#1 |
|
18 var c1=0,fin=0; |
|
19 for (x in mycars){ |
|
20 try{ |
|
21 c1+=1; |
|
22 break; |
|
23 } |
|
24 catch(er1){ |
|
25 c1+=1; |
|
26 } |
|
27 finally{ |
|
28 fin=1; |
|
29 } |
|
30 fin=-1; |
|
31 c1+=2; |
|
32 }; |
|
33 if(fin!==1){ |
|
34 $ERROR('#1.1: "finally" block must be evaluated'); |
|
35 } |
|
36 if(c1!==1){ |
|
37 $ERROR('#1.2: "try{break}catch finally" must work correctly'); |
|
38 } |
|
39 |
|
40 // CHECK#2 |
|
41 var c2=0,fin2=0; |
|
42 for (x in mycars){ |
|
43 try{ |
|
44 throw "ex1"; |
|
45 } |
|
46 catch(er1){ |
|
47 c2+=1; |
|
48 break; |
|
49 } |
|
50 finally{ |
|
51 fin2=1; |
|
52 } |
|
53 c2+=2; |
|
54 fin2=-1; |
|
55 } |
|
56 if(fin2!==1){ |
|
57 $ERROR('#2.1: "finally" block must be evaluated'); |
|
58 } |
|
59 if(c2!==1){ |
|
60 $ERROR('#2.2: "try catch{break} finally" must work correctly'); |
|
61 } |
|
62 |
|
63 // CHECK#3 |
|
64 var c3=0,fin3=0; |
|
65 for (x in mycars){ |
|
66 try{ |
|
67 throw "ex1"; |
|
68 } |
|
69 catch(er1){ |
|
70 c3+=1; |
|
71 } |
|
72 finally{ |
|
73 fin3=1; |
|
74 break; |
|
75 } |
|
76 c3+=2; |
|
77 fin3=0; |
|
78 } |
|
79 if(fin3!==1){ |
|
80 $ERROR('#3.1: "finally" block must be evaluated'); |
|
81 } |
|
82 if(c3!==1){ |
|
83 $ERROR('#3.2: "try catch finally{break}" must work correctly'); |
|
84 } |
|
85 |
|
86 // CHECK#4 |
|
87 var c4=0,fin4=0; |
|
88 for (x in mycars){ |
|
89 try{ |
|
90 c4+=1; |
|
91 break; |
|
92 } |
|
93 finally{ |
|
94 fin4=1; |
|
95 } |
|
96 fin4=-1; |
|
97 c4+=2; |
|
98 } |
|
99 if(fin4!==1){ |
|
100 $ERROR('#4.1: "finally" block must be evaluated'); |
|
101 } |
|
102 if(c4!==1){ |
|
103 $ERROR('#4.2: "try{break} finally" must work correctly'); |
|
104 } |
|
105 |
|
106 // CHECK#5 |
|
107 var c5=0; |
|
108 for (x in mycars){ |
|
109 try{ |
|
110 throw "ex1"; |
|
111 c5++; |
|
112 } |
|
113 catch(er1){ |
|
114 break; |
|
115 c5++; |
|
116 } |
|
117 c5++; |
|
118 } |
|
119 if(c5!==0){ |
|
120 $ERROR('#5: "try catch{break}" must work correctly'); |
|
121 } |
|
122 |
|
123 // CHECK#6 |
|
124 var c6=0; |
|
125 for (x in mycars){ |
|
126 try{ |
|
127 c6+=1; |
|
128 break; |
|
129 } |
|
130 catch(er1){} |
|
131 c6+=2; |
|
132 } |
|
133 if(c6!==1){ |
|
134 $ERROR('#6: "try{break} catch" must work correctly'); |
|
135 } |
|
136 |
|
137 // CHECK#7 |
|
138 var c7=0,fin7=0; |
|
139 try{ |
|
140 for (x in mycars){ |
|
141 try{ |
|
142 c7+=1; |
|
143 throw "ex1"; |
|
144 } |
|
145 finally{ |
|
146 fin7=1; |
|
147 break; |
|
148 } |
|
149 fin7=-1; |
|
150 c7+=2; |
|
151 } |
|
152 } |
|
153 catch(ex1){ |
|
154 c7=10; |
|
155 } |
|
156 if(fin7!==1){ |
|
157 $ERROR('#7.1: "finally" block must be evaluated'); |
|
158 } |
|
159 if(c7!==1){ |
|
160 $ERROR('#7.2: "try finally{break}" must work correctly'); |
|
161 } |
|
162 |