comparison.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. if (this.WScript && this.WScript.LoadScriptFile) { // Check for running in ch
  6. this.WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  7. }
  8. var tests = [
  9. {
  10. name: "Compare BigInt literal",
  11. body: function () {
  12. assert.isTrue(123n == 123n);
  13. assert.isTrue(123n < 1234n);
  14. assert.isFalse(123n > 1234n);
  15. assert.isFalse(123n == 1234n);
  16. assert.isTrue(1234n >= 1233n);
  17. assert.isTrue(1234n > 123n);
  18. }
  19. },
  20. {
  21. name: "Compare signed BigInt literal",
  22. body: function () {
  23. assert.isTrue(-123n == -123n);
  24. assert.isFalse(-123n < -1234n);
  25. assert.isTrue(-123n > -1234n);
  26. assert.isFalse(-123n == -1234n);
  27. assert.isFalse(-1234n >= -1233n);
  28. assert.isFalse(-1234n > -123n);
  29. assert.isTrue(123n > -1n);
  30. assert.isTrue(-1n > -123456789012n);
  31. }
  32. },
  33. {
  34. name: "Compare zero BigInt literal",
  35. body: function () {
  36. assert.isTrue(0n == -0n);
  37. assert.isTrue(-123n < -0n);
  38. assert.isTrue(-0n > -1234n);
  39. assert.isTrue(-0n <= 123n);
  40. assert.isFalse(0n >= 1233n);
  41. assert.isTrue(0n > -123n);
  42. assert.isTrue(0n > -1n);
  43. assert.isTrue(0n > -123456789012n);
  44. }
  45. },
  46. {
  47. name: "Init BigInt literal and compare",
  48. body: function () {
  49. var x = 12345678901234567890n;
  50. var y = 12345678901234567891n;
  51. assert.isFalse(x == y);
  52. assert.isTrue(x < y);
  53. assert.isTrue(x <= y);
  54. assert.isTrue(x == x);
  55. assert.isFalse(x >= y);
  56. assert.isFalse(x > y);
  57. }
  58. },
  59. {
  60. name: "Init BigInt Object and compare",
  61. body: function () {
  62. var x = BigInt(12345678901234567890n);
  63. var y = BigInt(12345678901234567891n);
  64. assert.isFalse(x == y);
  65. assert.isTrue(x < y);
  66. assert.isTrue(x <= y);
  67. assert.isTrue(x == x);
  68. assert.isFalse(x >= y);
  69. assert.isFalse(x > y);
  70. }
  71. },
  72. {
  73. name: "Out of 64 bit range",
  74. body: function () {
  75. var x = 1234567890123456789012345678901234567890n;
  76. var y = BigInt(1234567890123456789012345678901234567891n);
  77. assert.isFalse(x == y);
  78. assert.isTrue(x < y);
  79. assert.isTrue(x <= y);
  80. assert.isTrue(x == x);
  81. assert.isFalse(x >= y);
  82. assert.isFalse(x > y);
  83. }
  84. },
  85. {
  86. name: "Very big BigInt, test resize",
  87. body: function () {
  88. var x = eval('1234567890'.repeat(20) + 'n');
  89. var y = eval('1234567891'.repeat(20) + 'n');
  90. assert.isFalse(x == y);
  91. assert.isTrue(x < y);
  92. assert.isTrue(x <= y);
  93. assert.isTrue(x == x);
  94. assert.isFalse(x >= y);
  95. assert.isFalse(x > y);
  96. }
  97. },
  98. ];
  99. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });