regress-152646.js (2143B)
1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 /* 7 * 8 * Date: 08 July 2002 9 * SUMMARY: Testing expressions with large numbers of parentheses 10 * See http://bugzilla.mozilla.org/show_bug.cgi?id=152646 11 * 12 */ 13 //----------------------------------------------------------------------------- 14 var UBound = 0; 15 var BUGNUMBER = 152646; 16 var summary = 'Testing expressions with large numbers of parentheses'; 17 var status = ''; 18 var statusitems = []; 19 var actual = ''; 20 var actualvalues = []; 21 var expect= ''; 22 var expectedvalues = []; 23 24 25 /* 26 * Just seeing that we don't crash when compiling this assignment - 27 * 28 * We will form an eval string to set the result-variable |actual|. 29 * To get a feel for this, suppose N were 3. Then the eval string is 30 * 'actual = (((0)));' The expected value for this after eval() is 0. 31 */ 32 status = inSection(1); 33 34 var sLeft = '(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((('; 35 sLeft += sLeft; 36 sLeft += sLeft; 37 sLeft += sLeft; 38 sLeft += sLeft; 39 sLeft += sLeft; 40 41 var sRight = '))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'; 42 sRight += sRight; 43 sRight += sRight; 44 sRight += sRight; 45 sRight += sRight; 46 sRight += sRight; 47 48 var sEval = 'actual = ' + sLeft + '0' + sRight; 49 try 50 { 51 eval(sEval); 52 } 53 catch(e) 54 { 55 /* 56 * An exception during this eval is OK, as the runtime can throw one 57 * in response to too deep recursion. We haven't crashed; good! 58 */ 59 actual = 0; 60 } 61 expect = 0; 62 addThis(); 63 64 65 66 //----------------------------------------------------------------------------- 67 test(); 68 //----------------------------------------------------------------------------- 69 70 71 72 function addThis() 73 { 74 statusitems[UBound] = status; 75 actualvalues[UBound] = actual; 76 expectedvalues[UBound] = expect; 77 UBound++; 78 } 79 80 81 function test() 82 { 83 printBugNumber(BUGNUMBER); 84 printStatus(summary); 85 86 for (var i=0; i<UBound; i++) 87 { 88 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); 89 } 90 }