regress-74474-001.js (1996B)
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 * Date: 01 May 2001 8 * 9 * SUMMARY: Regression test for Bugzilla bug 74474 10 *"switch() misbehaves with duplicated labels" 11 * 12 * See ECMA3 Section 12.11, "The switch Statement" 13 * See http://bugzilla.mozilla.org/show_bug.cgi?id=74474 14 */ 15 //----------------------------------------------------------------------------- 16 var UBound = 0; 17 var BUGNUMBER = 74474; 18 var summary = 'Testing switch statements with duplicate labels'; 19 var status = ''; 20 var statusitems = [ ]; 21 var actual = ''; 22 var actualvalues = [ ]; 23 var expect= ''; 24 var expectedvalues = [ ]; 25 26 27 status = 'Section A of test: the string literal "1" as a duplicate label'; 28 actual = ''; 29 switch ('1') 30 { 31 case '1': 32 actual += 'a'; 33 case '1': 34 actual += 'b'; 35 } 36 expect = 'ab'; 37 addThis(); 38 39 40 status = 'Section B of test: the numeric literal 1 as a duplicate label'; 41 actual = ''; 42 switch (1) 43 { 44 case 1: 45 actual += 'a'; 46 case 1: 47 actual += 'b'; 48 } 49 expect = 'ab'; 50 addThis(); 51 52 53 status = 'Section C of test: the numeric literal 1 as a duplicate label, via a function parameter'; 54 tryThis(1); 55 function tryThis(x) 56 { 57 actual = ''; 58 59 switch (x) 60 { 61 case x: 62 actual += 'a'; 63 case x: 64 actual += 'b'; 65 } 66 } 67 expect = 'ab'; 68 addThis(); 69 70 71 72 //--------------------------------------------------------------------------------- 73 test(); 74 //--------------------------------------------------------------------------------- 75 76 77 78 function addThis() 79 { 80 statusitems[UBound] = status; 81 actualvalues[UBound] = actual; 82 expectedvalues[UBound] = expect; 83 UBound++; 84 } 85 86 87 function test() 88 { 89 printBugNumber(BUGNUMBER); 90 printStatus (summary); 91 92 for (var i = 0; i < UBound; i++) 93 { 94 reportCompare(expectedvalues[i], actualvalues[i], getStatus(i)); 95 } 96 } 97 98 99 function getStatus(i) 100 { 101 return statusitems[i]; 102 }