blob: d78f3b1780649ba2484b9c6419c1d0fb353a02b2 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
/*
*******************************UNIT TEST FOR SWITCH CASE OPTIMIZATION*******************************
* Testing for normal execution with all integers and bailing out
*/
/*
************************************************** TEST 1******************************************************
* Tests with all integer arguments
*/
function f(x)
{
switch(x)
{
case 1:
WScript.Echo(1);
break;
case 2:
WScript.Echo(2);
break;
case 3:
WScript.Echo(3);
break;
case 4:
WScript.Echo(4);
break;
case 5:
WScript.Echo(5);
break;
case 6:
WScript.Echo(6);
break;
case 7:
WScript.Echo(7);
break;
case 8:
WScript.Echo(8);
break;
case 9:
WScript.Echo(9);
break;
case 10:
WScript.Echo(10);
break;
case 11:
WScript.Echo(11);
break;
case 12:
WScript.Echo(12);
break;
case 13:
WScript.Echo(13);
break;
case 14:
WScript.Echo(14);
break;
case 15:
WScript.Echo(15);
break;
case 16:
WScript.Echo(16);
break;
case 17:
WScript.Echo(17);
break;
case 18:
WScript.Echo(18);
break;
case 19:
WScript.Echo(19);
break;
case 20:
WScript.Echo(20);
break;
default:
WScript.Echo('default');
break;
}
}
for (i = 1; i <= 20; i++)
{
f(i);
}
f(100);
f(0);
//making the switch to bail out on non-integer inputs
for(i=0;i<35;i++)
{
f(new Object);
}
/*
*********************************************TEST2**********************************
* The first execution of the switch statement is with an object
* The profiler data is updated during the first time itself and hence the optimization is not performed during the first time jit itself
*/
function g(x)
{
switch(x)
{
case 1:
WScript.Echo(1);
break;
case 2:
WScript.Echo(2);
break;
case 3:
WScript.Echo(3);
break;
case 4:
WScript.Echo(4);
break;
case 5:
WScript.Echo(5);
break;
case 6:
WScript.Echo(6);
break;
case 7:
WScript.Echo(7);
break;
case 8:
WScript.Echo(8);
break;
case 9:
WScript.Echo(9);
break;
case 10:
WScript.Echo(10);
break;
case 11:
WScript.Echo(11);
break;
case 12:
WScript.Echo(12);
break;
case 13:
WScript.Echo(13);
break;
case 14:
WScript.Echo(14);
break;
case 15:
WScript.Echo(15);
break;
case 16:
WScript.Echo(16);
break;
case 17:
WScript.Echo(17);
break;
case 18:
WScript.Echo(18);
break;
case 19:
WScript.Echo(19);
break;
case 20:
WScript.Echo(20);
break;
default:
WScript.Echo('default');
break;
}
}
for(i=0;i<35;i++)
{
g(new Object)
g(1);
g(-10);
g(9);
g(5);
}