| //------------------------------------------------------------------------------------------------------- | |
| // 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); | |
| } | |