forInObjectAdd.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. //
  6. //NOTE: this may break if enumeration order policy is changed in Chakra but that doesn't mean we have a bug in TTD
  7. //
  8. var x = { a: 1, b: 2};
  9. var largeObj = {};
  10. var outerObj = { a: 3, b: 4, c: 5 };
  11. var innerObj = { a: 3, b: 4, c: 5 };
  12. var objWithNumber= { a: 12, b: 13, c:23 };
  13. objWithNumber[13] = "Number13";
  14. objWithNumber[15] = "Number15";
  15. var undef;
  16. var nullValue = null;
  17. var integer = 3;
  18. var double = 3.4;
  19. WScript.SetTimeout(testFunction, 50);
  20. /////////////////
  21. function testFunction()
  22. {
  23. telemetryLog("Scenario 1: Adding properties on the fly", true);
  24. for(var i in x)
  25. {
  26. if(x[i] == 2)
  27. {
  28. x.c = 3;
  29. x.d = 4;
  30. }
  31. telemetryLog(`${x[i]}`, true);
  32. }
  33. telemetryLog("Scenario 2: Large number of properties in forin", true);
  34. for(var k=0; k < 25; k++)
  35. {
  36. largeObj["p"+k] = k + 0.3;
  37. }
  38. for(var i in largeObj)
  39. {
  40. telemetryLog(`${largeObj[i]}`, true);
  41. }
  42. telemetryLog("Sceanrio 3: Nested Forin", true);
  43. for(var i in outerObj)
  44. {
  45. telemetryLog(`${i}`, true);
  46. for(var j in innerObj)
  47. {
  48. telemetryLog(`${j}`, true);
  49. }
  50. }
  51. telemetryLog("Scenario 4: Properties and numerical indices in object", true);
  52. for(var i in objWithNumber)
  53. {
  54. telemetryLog(`${objWithNumber[i]}`, true);
  55. }
  56. for(var i in undef)
  57. {
  58. telemetryLog("FAILED: Entering enumeration of undefined", true);
  59. }
  60. for(var i in nullValue)
  61. {
  62. telemetryLog("FAILED: Entering enumeration of null value", true);
  63. }
  64. for(var i in integer)
  65. {
  66. telemetryLog("FAILED: Entering enumeration of integer", true);
  67. }
  68. for(var i in double)
  69. {
  70. telemetryLog("FAILED: Entering enumeration of double", true);
  71. }
  72. emitTTDLog(ttdLogURI);
  73. }