forInMisc.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. var echo = WScript.Echo;
  6. // https://github.com/Microsoft/ChakraCore/issues/1340
  7. function testForInInitializer() {
  8. try {
  9. eval('(function () { "use strict"; for (var i = 0 in { }) { } })');
  10. print('testForInInitializer strict: failure: did not throw');
  11. } catch (e) {
  12. var m = '' + e;
  13. var result = m === 'SyntaxError: for-in loop head declarations cannot have an initializer' ? 'success' : 'failure';
  14. print('testForInInitializer strict: ' + result + ': e = ' + m);
  15. }
  16. try {
  17. var f = eval('(function () { for (var i = 0 in { }) { } return i; })');
  18. var i = f();
  19. var result = i === 0 ? 'success' : 'failure';
  20. print('testForInInitializer non-strict: ' + result + ': i = ' + i);
  21. } catch (e) {
  22. print('testForInInitializer non-strict: failure: e = ' + e);
  23. }
  24. }
  25. testForInInitializer();
  26. // regress WOOB 1143623
  27. function find(arr, value) {
  28. var result = -1;
  29. for(var i in arr)
  30. {
  31. echo("enumerated index:", i);
  32. if(arr[i] == value)
  33. {
  34. result = i;
  35. break;
  36. }
  37. }
  38. return result;
  39. }
  40. var arr = [0, 1, 2, 3, 4, 5];
  41. echo("Find 3 at index: ", find(arr, 3));
  42. function propCacheTest()
  43. {
  44. var obj = new Object();
  45. for (var i = 0; i < 10; i++)
  46. {
  47. obj["randomprop" + i] = i;
  48. }
  49. var propArray = new Array();
  50. for (var prop in obj)
  51. {
  52. propArray[propArray.length] = prop;
  53. }
  54. for (var prop in Array)
  55. {
  56. }
  57. obj = null;
  58. return propArray;
  59. }
  60. var props = propCacheTest();
  61. CollectGarbage();
  62. for (var i = 0; i < props.length; i++)
  63. {
  64. echo(props[i]);
  65. }