randombug.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  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()
  6. {
  7. for(var i=0;i<arguments.length;i++)
  8. {
  9. WScript.Echo(arguments[i]);
  10. }
  11. }
  12. function TrimStackTracePath(line) {
  13. return line && line.replace(/\(.+\\test.bugs./ig, "(");
  14. }
  15. write("For Win8 934770");
  16. write("Test case 1");
  17. write((function(){
  18. var a;
  19. a <<=1;
  20. a = (1 <= a);
  21. return a;
  22. })());
  23. write("Test case 2");
  24. write((function(){
  25. var a;
  26. a <<=1;
  27. a = (1 < a);
  28. return a;
  29. })());
  30. write("Test case 3");
  31. write((function(){
  32. var a;
  33. a <<=1;
  34. a = (1 == a);
  35. return a;
  36. })());
  37. write("Test case 4");
  38. write((function(){
  39. var a;
  40. a <<=1;
  41. a = (1 != a);
  42. return a;
  43. })());
  44. write("Test case 5");
  45. write((function(){
  46. var a;
  47. a <<=1;
  48. a = (1 > a);
  49. return a;
  50. })());
  51. write("Test case 6");
  52. write((function(){
  53. var a;
  54. a <<=1;
  55. a = (1 >= a);
  56. return a;
  57. })());
  58. write("Test case 7");
  59. write((function(){
  60. var a;
  61. a <<=1;
  62. a = (1 !== a);
  63. return a;
  64. })());
  65. write("Test case 8");
  66. write((function(){
  67. var a;
  68. a <<=1;
  69. a = (1 === a);
  70. return a;
  71. })());
  72. write("Test case 9");
  73. write((function (b){
  74. var a;
  75. a <<=1;
  76. a = (a <= b);
  77. return a;
  78. })(1));
  79. write("Test case 10");
  80. write((function (b){
  81. var a;
  82. a <<=1;
  83. a = (a < b);
  84. return a;
  85. })(1));
  86. write("Test case 11");
  87. write((function (b){
  88. var a;
  89. a <<=1;
  90. a = (a == b);
  91. return a;
  92. })(1));
  93. write("Test case 12");
  94. write((function (b){
  95. var a;
  96. a <<=1;
  97. a = (a != b);
  98. return a;
  99. })(1));
  100. write("Test case 13");
  101. write((function (b){
  102. var a;
  103. a <<=1;
  104. a = (a === b);
  105. return a;
  106. })(1));
  107. write("Test case 14");
  108. write((function (b){
  109. var a;
  110. a <<=1;
  111. a = (a !== b);
  112. return a;
  113. })(1));
  114. write("Test case 15");
  115. write((function (b){
  116. var a;
  117. a <<=1;
  118. a = (a >= b);
  119. return a;
  120. })(1));
  121. write("Test case 16");
  122. write((function (b){
  123. var a;
  124. a <<=1;
  125. a = (a > b);
  126. return a;
  127. })(1));
  128. write("Test case 17");
  129. write((function (a){
  130. a = (a != a);
  131. return a;
  132. })(1));
  133. write("Test case 18");
  134. write((function (a){
  135. a = (a === a);
  136. return a;
  137. })(1));
  138. write("Win 8 935276");
  139. write("Test case 19");
  140. write((function (p2,p3){
  141. return (((p2 = p3* 3) + p2));
  142. })(10,20));
  143. write("Test case 20");
  144. write((function (p2,p3){
  145. return (((p2 = p3 * 3) + (p2 = p3 *4) ));
  146. })(46,2));
  147. write("Test case 21");
  148. write((function (p2,p3){
  149. return (((p2 = p3 * -8323432) + p3 ));
  150. })(44,23));
  151. write("Test case 22");
  152. write((function (p2,p3){
  153. return ((p3 + (p3 = p2 * p2) ));
  154. })(-46,-20));
  155. write("Test case 23");
  156. write((function (p2,p3){
  157. return (((p3 = p2 * p3) + p3 ));
  158. })(-23,20));
  159. write("Test case 24");
  160. write((function (p2,p3){
  161. return (((p3 = p2 * p3 * 4) + p3 ));
  162. })(10,20));
  163. write("Test case 25");
  164. write((function (p2,p3){
  165. return (((p3 = p2 * 23) + p3 ));
  166. })(10, new Number(-234)));
  167. write("Test case 26");
  168. write((function (p2,p3,p4){
  169. return (((p3 = p2 * p2) + p3 + (p4=p3*p2) ));
  170. })(10, 20, 30));
  171. write("Test case 27");
  172. function test27(){
  173. var obj0 = {};
  174. var arrObj0 = {};
  175. var ui32 = new Uint32Array(256);
  176. var c = 1;
  177. obj0.prop0 = 1;
  178. function bar1 (){
  179. }
  180. if(ui32[1] == 1 > 1) {
  181. if((new bar1()).prop0 ) {
  182. }
  183. else {
  184. c=arrObj0.prop0;
  185. }
  186. }
  187. };
  188. // generate profile
  189. test27();
  190. write("Passed");
  191. write("Test case 28");
  192. function test28(a){
  193. a=String.fromCharCode(a);
  194. }
  195. test28(10);
  196. write("Passed");
  197. write("Test case 29");
  198. function test29helper(_array2tmp) {
  199. for(var i in _array2tmp)
  200. {
  201. write(i);
  202. }
  203. }
  204. function test29(){
  205. var func0 = function(){
  206. test29helper([h]);
  207. }
  208. var h = -2147483648;
  209. func0();
  210. ++h;
  211. ++h; //creates a missing value
  212. func0();
  213. };
  214. // generate profile
  215. test29();
  216. write("Test case 30");
  217. function test30(){
  218. var floatary = [-1.5];
  219. if(floatary.length) {
  220. }
  221. else {
  222. // Array expression
  223. var _array1 = [(-1 * -1 - 2147483647)];
  224. }
  225. };
  226. test30();
  227. write("Passed");
  228. write("Test case 31");
  229. (function test31()
  230. {
  231. var func2 = function()
  232. {
  233. throw new Error();
  234. }
  235. function testlinenumber()
  236. {
  237. var arrObj0 = {};
  238. arrObj0.prop1 = 1;
  239. (1 ? 1 : 1) >= func2();
  240. };
  241. try
  242. {
  243. testlinenumber();
  244. }
  245. catch(ex)
  246. {
  247. write(TrimStackTracePath(ex.stack));
  248. }
  249. })();
  250. write("Passed");
  251. write("Test case 32");
  252. (function test32()
  253. {
  254. var shouldBailout = false;
  255. function test0()
  256. {
  257. var arrObj0 = {};
  258. var func1 = function(){
  259. var __loopvar4 = 0;
  260. for(var strvar0 in i32 ) {
  261. if(strvar0.indexOf('method') != -1) continue;
  262. if(__loopvar4++ > 3) break;
  263. arrObj0.length =1;
  264. continue ;
  265. ary0 = arguments;
  266. }
  267. }
  268. Object.prototype.method0 = func1;
  269. var i32 = new Int32Array(1);
  270. var e = 1;
  271. e &=(shouldBailout ? (Object.defineProperty(arrObj0, 'length', {set: function(_x) { write('arrObj0.length setter'); }, configurable: true}), arrObj0.method0()) : arrObj0.method0());
  272. };
  273. // generate profile
  274. test0();
  275. shouldBailout = true;
  276. test0();
  277. })();
  278. write("Passed");
  279. write("Test case 33");
  280. (function test33()
  281. {
  282. try
  283. {
  284. function inlinee(arg0 , arg1 , arg2)
  285. {
  286. throw new Object();
  287. }
  288. function inliner(arg0 , arg1)
  289. {
  290. }
  291. function func()
  292. {
  293. inliner(29,39,inlinee(22,33,44,55));
  294. }
  295. func(24,42);
  296. }catch(e){};
  297. })();
  298. write("Passed");
  299. write("Test case 34");
  300. (function test34()
  301. {
  302. var a;
  303. a = (typeof(a) == "boolean");
  304. write(a);
  305. })();
  306. write("Passed");
  307. write("Test case 34");
  308. (function test34()
  309. {
  310. for (var x = 1; x >= 0; x--)
  311. {
  312. var f = [];
  313. var c = f[0] ;
  314. c = f.push(c);
  315. write(f[0]);
  316. }
  317. })();
  318. write("Passed");
  319. write("Test case 35")
  320. function test35()
  321. {
  322. if(typeof EvalError == "test") //use random comparison
  323. {
  324. return true;
  325. }
  326. return false;
  327. }
  328. test35();
  329. write("Passed");
  330. write("Test case 36")
  331. function test36() {
  332. (function () {
  333. for (let hvkbnr in null)
  334. throw 'u5623';
  335. }());
  336. }
  337. try
  338. {
  339. test36();
  340. }catch(e)
  341. {
  342. }
  343. try
  344. {
  345. test36();
  346. }catch(e)
  347. {
  348. }
  349. write("Passed")
  350. write("Test case 37")
  351. var test37 = function()
  352. {
  353. };
  354. test37.prototype.B = function(a,b,c,d){return a+b+c+d;};
  355. var A = new test37();
  356. function F()
  357. {
  358. this.init.apply(this,arguments);
  359. }
  360. F.prototype.init = function()
  361. {
  362. A.B.apply(this, arguments);
  363. }
  364. function bar()
  365. {
  366. return new F(10,30,40,50);
  367. }
  368. write(bar());
  369. write(bar());
  370. write("passed");
  371. write("Test case 38")
  372. var test38 = function (d, j, a)
  373. {
  374. do
  375. {
  376. if (d >= j)
  377. {
  378. break;
  379. }
  380. }
  381. while(1);
  382. for (;d < j;)
  383. {
  384. }
  385. return 10;
  386. };
  387. write("passed")
  388. write("Test case 40");
  389. (function test31()
  390. {
  391. function testRuntimeError()
  392. {
  393. eval(" for (var x in []) { undefinedFunction((test ? false &= 1 : true)); }");
  394. };
  395. try
  396. {
  397. testRuntimeError();
  398. }
  399. catch(ex)
  400. {
  401. write(TrimStackTracePath(ex.stack));
  402. }
  403. })();
  404. write("Passed");
  405. write("Test case 41");
  406. (function test41()
  407. {
  408. var obj0 = {};
  409. var arrObj0 = {};
  410. var func1 = function () {}
  411. obj0.method0 = func1;
  412. var IntArr1 = new Array();
  413. Object.prototype.prop0 = 1;
  414. var __loopvar0 = 0;
  415. for (var _strvar20 in arrObj0) {
  416. if (_strvar20.indexOf('method') != -1)
  417. continue;
  418. if (__loopvar0++ > 3)
  419. break;
  420. arrObj0[_strvar20] = Math.pow((IntArr1.push(obj0.method0(), (arrObj0.prop1 != arrObj0.prop0), (typeof(obj0.prop0) == 'number'), (typeof(781458996) != 'number'), IntArr1[(((Object.prototype.prop0 >= 0 ? Object.prototype.prop0 : 0)) & 0XF)], (typeof(this.prop0) == 'string'), (typeof(this.prop0) == 'string'))), 1);
  421. function func22() {
  422. Math.pow((IntArr1.push(obj0.method0(), (arrObj0.prop1 != arrObj0.prop0), (typeof(obj0.prop0) == 'number'), (typeof(781458996) != 'number'), IntArr1[(((Object.prototype.prop0 >= 0 ? Object.prototype.prop0 : 0)) & 0XF)], (typeof(this.prop0) == 'string'), (typeof(this.prop0) == 'string'))), 1);
  423. }
  424. }
  425. })();
  426. write("Passed");
  427. write("Test case 42");
  428. (function test42()
  429. {
  430. var ary = new Array(10);
  431. arrObj0 = Object.prototype;
  432. arrObj0[5] = "temp";
  433. ary[1] * ((ary.unshift()) - ary[1]);
  434. })();
  435. write("Passed");
  436. write("Test case 43");
  437. (function test43()
  438. {
  439. //Bug seen with -prejit, adding a generic test case
  440. var obj0 = {};
  441. var arrObj0 = {};
  442. var VarArr0 = [arrObj0];
  443. var v58 = {
  444. init: function () {
  445. return function bar() {
  446. arrObj0.prop0;
  447. };
  448. }
  449. };
  450. CollectGarbage();
  451. obj0.method1 = v58.init();
  452. obj0.method1.prototype = {};
  453. //Property guard should get invalidated
  454. arrObj0 = new obj0.method1();
  455. })();
  456. write("Passed");
  457. write("Test case 44");
  458. (function test44()
  459. {
  460. function test0(){
  461. // Snippet : Native array profile information update
  462. function v2496(v2497) {
  463. var v2498 = new Array(v2497);
  464. for(var v2500 = 0; v2500 < v2497; v2500++) {
  465. v2498 = v2500;
  466. }
  467. return v2498;
  468. }
  469. function v2502(v2499) {
  470. var v2503 = 0;
  471. for(var v2501 in v2499) {
  472. v2503 += v2499[v2501];
  473. }
  474. return v2503;
  475. }
  476. var v2504 = v2496(5);
  477. v2502(v2504);
  478. // create missing value and transform the array
  479. if((1 % 5) <= 3) {
  480. v2504[v2504.length + 5] = 1;
  481. }
  482. var v2505 = v2496(10);
  483. v2502(v2505);
  484. };
  485. // generate profile
  486. test0();
  487. test0();
  488. test0();
  489. })();
  490. write("Passed");
  491. write("Test case 45");
  492. (function test45()
  493. {
  494. write((Function("return"))());
  495. write((Function("return;"))());
  496. write((Function("return 25;"))());
  497. })();
  498. write("Passed");
  499. write("Test case 46");
  500. (function test46()
  501. {
  502. function compare(a, b){}
  503. var boundFunction = compare.bind();
  504. write(Object.getOwnPropertyNames(boundFunction));
  505. })();
  506. write("Passed");
  507. write("Test case 47");
  508. (function test47()
  509. {
  510. Function('label\n:foo')
  511. localLabel
  512. : write("\\n in label accepted");
  513. })();
  514. write("Passed");
  515. write("Test case 48");
  516. (function test48()
  517. {
  518. var a = Math.random();
  519. })();
  520. write("Passed");