randombug.js 11 KB

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