inbug.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 test0() {
  6. // -ve index true case
  7. var arr0 = Array(1, 2);
  8. arr0[-7] = 3;
  9. return (-7 in arr0);
  10. }
  11. var res = test0();
  12. res &= test0();
  13. res &= test0();
  14. function test1() {
  15. // multiple segments
  16. var arr0 = Array();
  17. arr0[11] = -2;
  18. return (11 in arr0);
  19. }
  20. res &= test1();
  21. res &= test1();
  22. res &= test1();
  23. function test2() {
  24. // -ve index false case
  25. var arr0 = Array(1, 2);
  26. return (-7 in arr0);
  27. }
  28. res &= !test2();
  29. res &= !test2();
  30. res &= !test2();
  31. function test3() {
  32. // +ve index on prototype
  33. var arr0 = Array(1, 2);
  34. Array.prototype[7] = 0;
  35. var ret = (7 in arr0);
  36. delete Array.prototype[7];
  37. return ret;
  38. }
  39. res &= test3();
  40. res &= test3();
  41. res &= test3();
  42. function test4() {
  43. // -ve index on prototype
  44. var arr0 = Array(1, 2);
  45. Array.prototype[-2] = 0;
  46. var ret = (-2 in arr0);
  47. delete Array.prototype[-2];
  48. return ret;
  49. }
  50. res &= test4();
  51. res &= test4();
  52. res &= test4();
  53. function test5() {
  54. // length edge cases and NativeIntArray case
  55. var ret1 = 0 in [];
  56. var ret2 = 2 in [1, 2];
  57. var ret3 = 0 in [1, 2];
  58. var ret4 = 1 in [1, 2];
  59. return (!ret1 & !ret2 & ret3 & ret4);
  60. }
  61. res &= test5();
  62. res &= test5();
  63. res &= test5();
  64. function test6() {
  65. // not an int index
  66. return !(1.1 in [1,2]);
  67. }
  68. res &= test6();
  69. res &= test6();
  70. res &= test6();
  71. function test7() {
  72. var ret1 = 0 in [1.1, 2.1];
  73. var ret2 = 2 in [1, 2.0];
  74. return (ret1 & !ret2);
  75. }
  76. res &= test7();
  77. res &= test7();
  78. res &= test7();
  79. function test8() {
  80. var arr = [1, 2];
  81. delete arr[0];
  82. return !(0 in arr);
  83. }
  84. res &= test8();
  85. res &= test8();
  86. res &= test8();
  87. var arr = [1, 2];
  88. function test9() {
  89. return (0 in arr);
  90. }
  91. res &= test9();
  92. res &= test9();
  93. delete arr[0];
  94. res &= !test9();
  95. if (res) {
  96. print("Passed");
  97. }