array_slice2.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. function echo(v) {
  6. WScript.Echo(v);
  7. }
  8. echo("-------slice sparse array-------------");
  9. function dump_array(arr) {
  10. echo("length: " + arr.length);
  11. for (var p in arr) {
  12. echo(" " + p + ": " + arr[p]);
  13. }
  14. }
  15. echo("-- arr1");
  16. var arr = [];
  17. arr[2147483647] = 100;
  18. var newarr = arr.slice(0, 2147483648);
  19. dump_array(newarr);
  20. echo("-- arr2");
  21. var arr = [];
  22. var base = 4294967290;
  23. for (var i = 0; i < 10; i++) {
  24. arr[base + i] = 100 + i;
  25. }
  26. echo("-src");
  27. dump_array(arr);
  28. echo("-sliced");
  29. var newarr = arr.slice(2147483648, 4294967299);
  30. dump_array(newarr);
  31. echo("-------test prototype lookup-------------");
  32. function test_slice(start, end) {
  33. for (var i = 0; i < 10; i++) {
  34. Array.prototype[i] = 100 + i;
  35. }
  36. delete Array.prototype[3];
  37. var a = [200, 201, 202, 203, 204];
  38. delete a[1];
  39. a[7] = 207;
  40. var astr = "" + a;
  41. var r = a.slice(start, end);
  42. for (var i = 0; i < 10; i++) {
  43. delete Array.prototype[i];
  44. }
  45. echo(astr + " ==> [" + start + ".." + end + "]: " + r);
  46. }
  47. test_slice(0, 0);
  48. test_slice(0, 5);
  49. test_slice(0, 7);
  50. test_slice(0, 8);
  51. test_slice(0, 100);
  52. test_slice(2, 0);
  53. test_slice(2, 5);
  54. test_slice(2, 7);
  55. test_slice(2, 8);
  56. test_slice(2, 100);
  57. test_slice(7, 0);
  58. test_slice(7, 5);
  59. test_slice(7, 7);
  60. test_slice(7, 8);
  61. test_slice(7, 100);
  62. test_slice(8, 0);
  63. test_slice(8, 5);
  64. test_slice(8, 7);
  65. test_slice(8, 8);
  66. test_slice(8, 100);