array_splice.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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. //Test odd parameters
  6. var a = [0, 1, 2, 3, 4, 5, 6];
  7. var x = a.splice(-100, -100);
  8. WScript.Echo(a);
  9. WScript.Echo(x);
  10. x = a.splice();
  11. WScript.Echo(a);
  12. WScript.Echo(x);
  13. x = a.splice(0);
  14. WScript.Echo(a);
  15. WScript.Echo(x);
  16. var x = a.splice(0, 0);
  17. WScript.Echo(a);
  18. WScript.Echo(x);
  19. var x = a.splice(1, -4);
  20. WScript.Echo(a);
  21. WScript.Echo(x);
  22. var x = a.splice(7, -4, 8, 9, 10);
  23. WScript.Echo(a);
  24. WScript.Echo(x);
  25. var x = a.splice(20, 40);
  26. WScript.Echo(a);
  27. WScript.Echo(x);
  28. var x = a.splice(-20, 4, 11, 12);
  29. WScript.Echo(a);
  30. WScript.Echo(x);
  31. x = a.splice(-100, -100);
  32. WScript.Echo(a);
  33. WScript.Echo(x);
  34. //Test array
  35. var b = [8,9];
  36. var c = [11,12];
  37. x = a.splice(5,1);
  38. WScript.Echo(x);
  39. WScript.Echo(a);
  40. x = a.splice(2, 2, b, c);
  41. WScript.Echo(x);
  42. WScript.Echo(a);
  43. x = a.splice(-2, -2, b, c);
  44. WScript.Echo(x);
  45. WScript.Echo(a);
  46. x = a.splice(10, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b);
  47. WScript.Echo(x);
  48. WScript.Echo(a);
  49. var d = [1, [2, 3, 4], [5, 6, 7]];
  50. x = a.splice(5, 1, d);
  51. WScript.Echo(x);
  52. WScript.Echo(a);
  53. var f = new Object();
  54. f.x = 0;
  55. f.y = 1;
  56. f.z = 2;
  57. x = a.splice(1,2, f, "hello");
  58. WScript.Echo(x);
  59. WScript.Echo(a);
  60. //Test object
  61. var x = new Object();
  62. x.length = 6;
  63. x[0] = 1;
  64. x[1] = 2;
  65. x[2] = 3;
  66. x[3] = 4;
  67. x[4] = 5;
  68. x[5] = 6;
  69. x.foo = Array.prototype.splice;
  70. WScript.Echo(x.length);
  71. var y = x.foo(0, 1, 9, 10, 11, 12);
  72. WScript.Echo(y);
  73. WScript.Echo(x.length);
  74. y = x.foo(0, 9);
  75. WScript.Echo(y);
  76. WScript.Echo(x.length);
  77. y = x.foo(0, 0, 1, 2, 3, 4, 5, 6);
  78. WScript.Echo(y);
  79. WScript.Echo(x.length);
  80. y = x.foo(3, 3, 7);
  81. WScript.Echo(y);
  82. WScript.Echo(x.length);
  83. y = x.foo(0, 8);
  84. WScript.Echo(y);
  85. WScript.Echo(x.length);
  86. //Test string
  87. x = new String("hello world");
  88. x.foo = Array.prototype.splice;
  89. y = undefined;
  90. try
  91. {
  92. y = x.foo(0, 5);
  93. }
  94. catch(e)
  95. {
  96. if (!e instanceof TypeError) throw(e);
  97. WScript.Echo(y);
  98. WScript.Echo(x);
  99. }
  100. try
  101. {
  102. y = x.foo(0, 5);
  103. }
  104. catch(e)
  105. {
  106. if (!e instanceof TypeError) throw(e);
  107. WScript.Echo(y);
  108. WScript.Echo(x);
  109. }
  110. try
  111. {
  112. y = x.foo(0, 13);
  113. }
  114. catch(e)
  115. {
  116. if (!e instanceof TypeError) throw(e);
  117. WScript.Echo(y);
  118. WScript.Echo(x);
  119. }
  120. WScript.Echo("Test: splice when the item to replace is not writable."); // WOOB: 1139812
  121. var a = {};
  122. Object.defineProperty(a, "0", { value: 0 });
  123. Object.defineProperty(a, "1", { value: 1 });
  124. a.length = 2;
  125. try {
  126. Array.prototype.splice.apply(a, [0, 1, 'z']);
  127. } catch (ex) {
  128. WScript.Echo("e instanceOf TypeError = " + (ex instanceof TypeError));
  129. }
  130. WScript.Echo("a.length = " + a.length);
  131. a = new Array(1000);
  132. x = a.splice(1, 17, "a");
  133. function test0()
  134. {
  135. var arr = [0,1,2,3,4,5,6,7,8,9];
  136. for(var __loopvar4 = 0; __loopvar4 < 2; __loopvar4++)
  137. {
  138. arr.length --;
  139. arr.splice(3,1,31,32,33);
  140. }
  141. return arr.length;
  142. }
  143. WScript.Echo("arr.length = " + test0());