ObjectSpread_Limits.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. // Object Spread unit tests
  6. if (this.WScript && this.WScript.LoadScriptFile) { // Check for running in ch
  7. this.WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  8. }
  9. var tests = [
  10. // Disabled for now until decision on whether this should be included
  11. // {
  12. // name: "Test Maximum Spread size",
  13. // body: function() {
  14. // let maxSize = 243019865;
  15. // let arr = new Array(maxSize);
  16. // for (i = 0; i < maxSize; i++) {
  17. // arr[i] = i;
  18. // }
  19. // let obj = {...arr};
  20. // assert.areEqual(maxSize, Object.keys(obj).length);
  21. // for(var propName in obj) {
  22. // propValue = obj[propName];
  23. // assert.areEqual(propName, propValue.toString());
  24. // }
  25. // }
  26. // },
  27. {
  28. name: "Test Spread near array limits",
  29. body: function() {
  30. function testRange(start, end) {
  31. let arr = [] ;
  32. for (i = start; i < end; i++) {
  33. arr[i] = i;
  34. }
  35. let obj = {...arr};
  36. assert.areEqual(end-start, Object.keys(obj).length);
  37. for(var propName in obj) {
  38. propValue = obj[propName];
  39. assert.areEqual(propName, propValue.toString());
  40. }
  41. };
  42. testRange(2**31-100, 2**31+100);
  43. testRange(2**32-100, 2**32+100);
  44. }
  45. },
  46. ];
  47. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });