1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/test262/ch12/12.14/S12.14_A12_T3.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,162 @@ 1.4 +// Copyright 2009 the Sputnik authors. All rights reserved. 1.5 +// This code is governed by the BSD license found in the LICENSE file. 1.6 + 1.7 +/** 1.8 + * Using "try" with "catch" or "finally" statement within/without a "for-in" statement 1.9 + * 1.10 + * @path ch12/12.14/S12.14_A12_T3.js 1.11 + * @description Try statement inside loop, where use break 1.12 + */ 1.13 + 1.14 +var x; 1.15 +var mycars = new Array(); 1.16 +mycars[0] = "Saab"; 1.17 +mycars[1] = "Volvo"; 1.18 +mycars[2] = "BMW"; 1.19 + 1.20 +// CHECK#1 1.21 +var c1=0,fin=0; 1.22 +for (x in mycars){ 1.23 + try{ 1.24 + c1+=1; 1.25 + break; 1.26 + } 1.27 + catch(er1){ 1.28 + c1+=1; 1.29 + } 1.30 + finally{ 1.31 + fin=1; 1.32 + } 1.33 + fin=-1; 1.34 + c1+=2; 1.35 +}; 1.36 +if(fin!==1){ 1.37 + $ERROR('#1.1: "finally" block must be evaluated'); 1.38 +} 1.39 +if(c1!==1){ 1.40 + $ERROR('#1.2: "try{break}catch finally" must work correctly'); 1.41 +} 1.42 + 1.43 +// CHECK#2 1.44 +var c2=0,fin2=0; 1.45 +for (x in mycars){ 1.46 + try{ 1.47 + throw "ex1"; 1.48 + } 1.49 + catch(er1){ 1.50 + c2+=1; 1.51 + break; 1.52 + } 1.53 + finally{ 1.54 + fin2=1; 1.55 + } 1.56 + c2+=2; 1.57 + fin2=-1; 1.58 +} 1.59 +if(fin2!==1){ 1.60 + $ERROR('#2.1: "finally" block must be evaluated'); 1.61 +} 1.62 +if(c2!==1){ 1.63 + $ERROR('#2.2: "try catch{break} finally" must work correctly'); 1.64 +} 1.65 + 1.66 +// CHECK#3 1.67 +var c3=0,fin3=0; 1.68 +for (x in mycars){ 1.69 + try{ 1.70 + throw "ex1"; 1.71 + } 1.72 + catch(er1){ 1.73 + c3+=1; 1.74 + } 1.75 + finally{ 1.76 + fin3=1; 1.77 + break; 1.78 + } 1.79 + c3+=2; 1.80 + fin3=0; 1.81 +} 1.82 +if(fin3!==1){ 1.83 + $ERROR('#3.1: "finally" block must be evaluated'); 1.84 +} 1.85 +if(c3!==1){ 1.86 + $ERROR('#3.2: "try catch finally{break}" must work correctly'); 1.87 +} 1.88 + 1.89 +// CHECK#4 1.90 +var c4=0,fin4=0; 1.91 +for (x in mycars){ 1.92 + try{ 1.93 + c4+=1; 1.94 + break; 1.95 + } 1.96 + finally{ 1.97 + fin4=1; 1.98 + } 1.99 + fin4=-1; 1.100 + c4+=2; 1.101 +} 1.102 +if(fin4!==1){ 1.103 + $ERROR('#4.1: "finally" block must be evaluated'); 1.104 +} 1.105 +if(c4!==1){ 1.106 + $ERROR('#4.2: "try{break} finally" must work correctly'); 1.107 +} 1.108 + 1.109 +// CHECK#5 1.110 +var c5=0; 1.111 +for (x in mycars){ 1.112 + try{ 1.113 + throw "ex1"; 1.114 + c5++; 1.115 + } 1.116 + catch(er1){ 1.117 + break; 1.118 + c5++; 1.119 + } 1.120 + c5++; 1.121 +} 1.122 +if(c5!==0){ 1.123 + $ERROR('#5: "try catch{break}" must work correctly'); 1.124 +} 1.125 + 1.126 +// CHECK#6 1.127 +var c6=0; 1.128 +for (x in mycars){ 1.129 + try{ 1.130 + c6+=1; 1.131 + break; 1.132 + } 1.133 + catch(er1){} 1.134 + c6+=2; 1.135 +} 1.136 +if(c6!==1){ 1.137 + $ERROR('#6: "try{break} catch" must work correctly'); 1.138 +} 1.139 + 1.140 +// CHECK#7 1.141 +var c7=0,fin7=0; 1.142 +try{ 1.143 + for (x in mycars){ 1.144 + try{ 1.145 + c7+=1; 1.146 + throw "ex1"; 1.147 + } 1.148 + finally{ 1.149 + fin7=1; 1.150 + break; 1.151 + } 1.152 + fin7=-1; 1.153 + c7+=2; 1.154 + } 1.155 +} 1.156 +catch(ex1){ 1.157 + c7=10; 1.158 +} 1.159 +if(fin7!==1){ 1.160 + $ERROR('#7.1: "finally" block must be evaluated'); 1.161 +} 1.162 +if(c7!==1){ 1.163 + $ERROR('#7.2: "try finally{break}" must work correctly'); 1.164 +} 1.165 +