1 /** 2 * File Name: switch-003.js 3 * ECMA Section: 4 * Description: The switch Statement 5 * 6 * This uses variables and objects as case expressions in switch statements. 7 * This verifies a bunch of bugs: 8 * 9 * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315988 10 * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315975 11 * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=315954 12 * 13 * Author: christine (at) netscape.com 14 * Date: 11 August 1998 15 * 16 */ 17 var SECTION = "switch-003"; 18 var VERSION = "ECMA_2"; 19 var TITLE = "The switch statement"; 20 var BUGNUMBER= "315988"; 21 22 startTest(); 23 writeHeaderToLog( SECTION + " "+ TITLE); 24 25 var tc = 0; 26 var testcases = new Array(); 27 28 ONE = new Number(1); 29 ZERO = new Number(0); 30 var A = new String("A"); 31 var B = new String("B"); 32 TRUE = new Boolean( true ); 33 FALSE = new Boolean( false ); 34 UNDEFINED = void 0; 35 NULL = null; 36 37 SwitchTest( ZERO, "ZERO" ); 38 SwitchTest( NULL, "NULL" ); 39 SwitchTest( UNDEFINED, "UNDEFINED" ); 40 SwitchTest( FALSE, "FALSE" ); 41 SwitchTest( false, "false" ); 42 SwitchTest( 0, "0" ); 43 44 SwitchTest ( TRUE, "TRUE" ); 45 SwitchTest( 1, "1" ); 46 SwitchTest( ONE, "ONE" ); 47 SwitchTest( true, "true" ); 48 49 SwitchTest( "a", "a" ); 50 SwitchTest( A, "A" ); 51 SwitchTest( "b", "b" ); 52 SwitchTest( B, "B" ); 53 54 SwitchTest( new Boolean( true ), "default" ); 55 SwitchTest( new Boolean(false ), "default" ); 56 SwitchTest( new String( "A" ), "default" ); 57 SwitchTest( new Number( 0 ), "default" ); 58 59 test(); 60 61 function SwitchTest( input, expect ) { 62 var result = ""; 63 64 switch ( input ) { 65 default: result += "default"; break; 66 case "a": result += "a"; break; 67 case "b": result += "b"; break; 68 case A: result += "A"; break; 69 case B: result += "B"; break; 70 case new Boolean(true): result += "new TRUE"; break; 71 case new Boolean(false): result += "new FALSE"; break; 72 case NULL: result += "NULL"; break; 73 case UNDEFINED: result += "UNDEFINED"; break; 74 case true: result += "true"; break; 75 case false: result += "false"; break; 76 case TRUE: result += "TRUE"; break; 77 case FALSE: result += "FALSE"; break; 78 case 0: result += "0"; break; 79 case 1: result += "1"; break; 80 case new Number(0) : result += "new ZERO"; break; 81 case new Number(1) : result += "new ONE"; break; 82 case ONE: result += "ONE"; break; 83 case ZERO: result += "ZERO"; break; 84 } 85 86 testcases[tc++] = new TestCase( 87 SECTION, 88 "switch with no breaks: input is " + input, 89 expect, 90 result ); 91 } 92