protoLookupWithGetters.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  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 write(args)
  6. {
  7. WScript.Echo(args);
  8. }
  9. write("Test case 1");
  10. for(var i =0;i<10;i++)
  11. {
  12. Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), set : function(a) {}, configurable: true, enumerable: true });
  13. }
  14. var arr=new Array(10);
  15. var newarr=arr.splice(0,5,"d1","d2","d3","d4")
  16. write(arr);
  17. write(arr.length);
  18. write(newarr);
  19. write(newarr.length);
  20. for(var i =0;i<10;i++)
  21. {
  22. delete Array.prototype[i];
  23. }
  24. write("");
  25. write("Test case 2");
  26. for(var i =0;i<10;i++)
  27. {
  28. Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), set : function(a) {}, configurable: true, enumerable: true });
  29. }
  30. var arr=new Array(10);
  31. var newarr=arr.splice(0,5,"d1","d2","d3","d4","d5","d6","d7")
  32. write(arr);
  33. write(arr.length);
  34. write(newarr);
  35. write(newarr.length);
  36. for(var i =0;i<10;i++)
  37. {
  38. delete Array.prototype[i];
  39. }
  40. write("");
  41. write("Test case 3");
  42. for(var i =0;i<10;i++)
  43. {
  44. i++;
  45. Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), set : function(a) {}, configurable: true, enumerable: true });
  46. }
  47. var arr=new Array(10);
  48. var newarr=arr.splice(0,5,"d1","d2","d3","d4","d5","d6","d7")
  49. write(arr);
  50. write(arr.length);
  51. write(newarr);
  52. write(newarr.length);
  53. for(var i =0;i<10;i++)
  54. {
  55. delete Array.prototype[i];
  56. }
  57. write("");
  58. write("Test case 4");
  59. for(var k=0;k<10;k++)
  60. {
  61. Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), set : function(a) {}, configurable: true, enumerable: true });
  62. }
  63. var arr=new Array(10);
  64. var newarr=arr.splice(3,5,"d1","d2","d3")
  65. write(arr);
  66. write(arr.length);
  67. write(newarr);
  68. write(newarr.length);
  69. for(var k=0;k<10;k++)
  70. {
  71. delete Array.prototype[k];
  72. }
  73. write("");
  74. write("Test case 5");
  75. for(var k=0;k<10;k++)
  76. {
  77. Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), set : function(a) {}, configurable: true, enumerable: true });
  78. }
  79. var arr=new Array(10);
  80. var newarr=arr.splice(3,5,"d1","d2","d3")
  81. write(arr);
  82. write(arr.length);
  83. write(newarr);
  84. write(newarr.length);
  85. for(var k=0;k<10;k++)
  86. {
  87. delete Array.prototype[k];
  88. }
  89. write("");
  90. write("Test case 6");
  91. for(var k=0;k<10;k++)
  92. {
  93. Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), set : function(a) {}, configurable: true, enumerable: true });
  94. }
  95. var arr=new Array(10);
  96. var newarr=arr.splice(3,1,"d1","d2","d3")
  97. write(arr);
  98. write(arr.length);
  99. write(newarr);
  100. write(newarr.length);
  101. for(var k=0;k<10;k++)
  102. {
  103. delete Array.prototype[k];
  104. }
  105. write("");
  106. write("Test case 7");
  107. Object.prototype.shift=Array.prototype.shift;
  108. var obj =new Object();
  109. obj.length=10;
  110. obj[0]=101;
  111. obj[1]="string";
  112. obj[9]="lastelement";
  113. var res=obj.shift()
  114. for(var i in obj)
  115. write("expando:" + i +"=" +obj[i]);
  116. delete Object.prototype.shift;
  117. write("");
  118. write("Test case 8");
  119. Object.defineProperty(Object.prototype, 0, { get: function () { return "hello world"; }, configurable: true, enumerable: true });
  120. Object.defineProperty(Array.prototype, 9, { get: function () { return "p9"; }, configurable: true, enumerable: true });
  121. var arr =new Array(10);
  122. arr[1]=123;
  123. var res=arr.shift();
  124. write(res);
  125. write(res.length);
  126. write(arr);
  127. write(arr.length);
  128. delete Object.prototype[0];
  129. delete Array.prototype[9];
  130. write("");
  131. write("Test case 9");
  132. var arr1 = new Array(2147483649);
  133. arr1[2147483647]=100;
  134. var newarr=arr1.slice(2147483640,2147483648);
  135. write(newarr);
  136. write(newarr.length);
  137. write(arr1.length);
  138. var test11arr = new Array(5);
  139. test11arr[2] = 2;
  140. test11arr[3] = 3;
  141. test11arr[4] = 4;
  142. write("");
  143. write("Test case 10");
  144. var arr = [];
  145. for(var i = 1; i< 20; i = i+3)
  146. {
  147. arr[i] = i;
  148. }
  149. for(var i = 0; i< 20; i = i+3)
  150. {
  151. Object.defineProperty(Object.prototype, i, { get: function (i) { return function () { return "O"+i; } }(i), set : function(ab) {}, configurable: true, enumerable: true });
  152. }
  153. for(var i = 1; i< 20; i = i+3)
  154. {
  155. Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "a"+i; } }(i), set : function(ab) {}, configurable: true, enumerable: true });
  156. }
  157. arr.shift();
  158. write(arr);
  159. write(arr.length);
  160. arr.unshift(10);
  161. write(arr);
  162. write(arr.length);
  163. var newarr = arr.splice(5,2,"a","b");
  164. write(arr);
  165. write(arr.length);
  166. write(newarr);
  167. write(newarr.length);
  168. newarr = arr.splice(7,6,"a","b");
  169. write(arr);
  170. write(arr.length);
  171. write(newarr);
  172. write(newarr.length);
  173. newarr = arr.splice(10,2,"a","b","c","e","f");
  174. write(arr);
  175. write(arr.length);
  176. write(newarr);
  177. write(newarr.length);
  178. write("");
  179. write("Test case 11");
  180. Object.defineProperty(Object.prototype, 2, { get: function () { return 10; }, configurable: true, enumerable: true });
  181. var arr = new Array(5);
  182. write(arr);
  183. write(arr.length);
  184. arr.shift();
  185. write(arr);
  186. write(arr.length);
  187. arr.unshift("10","20");
  188. arr.shift();
  189. write(arr);
  190. arr.shift();
  191. write(arr);
  192. arr.unshift(10,40);
  193. write(arr);
  194. arr.unshift(50);
  195. write(arr);
  196. arr.shift(50);
  197. write(arr);
  198. var arr = new Array(5);
  199. write(arr);
  200. write(arr.length);
  201. arr.reverse();
  202. write(arr);
  203. write(arr.length);
  204. var arr = test11arr;
  205. write(arr);
  206. write(arr.length);
  207. arr.reverse();
  208. write(arr);
  209. write(arr.length);
  210. var a = [1, 2, 3];
  211. var b = [];
  212. b.length = 3;
  213. write(a.concat(b));