subtract.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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: "Subtract BigInt literal",
  11. body: function () {
  12. var x = 5n;
  13. var y = 2n;
  14. var z = x - y;
  15. assert.isTrue(z == 3n);
  16. }
  17. },
  18. {
  19. name: "Subtract to change length",
  20. body: function () {
  21. var x = 4294967297n;
  22. assert.isTrue(x == 4294967297n);
  23. assert.isTrue(x - 2n == 4294967295n);
  24. }
  25. },
  26. {
  27. name: "Out of 64 bit range",
  28. body: function () {
  29. var x = 1234567890123456789012345678901234567892n;
  30. var y = BigInt(1234567890123456789012345678901234567890n);
  31. assert.isTrue(x - 2n == y);
  32. }
  33. },
  34. {
  35. name: "Very big",
  36. body: function () {
  37. var x = eval('1234567890'.repeat(20)+'0n');
  38. var y = BigInt(eval('1234567890'.repeat(20)+'7n'));
  39. assert.isTrue(x == y - 7n);
  40. }
  41. },
  42. {
  43. name: "Subtract with signed number",
  44. body: function () {
  45. assert.isTrue(-1n - 2n == -3n);
  46. assert.isTrue(2n - -1n == 3n);
  47. assert.isTrue(-2n - 1n == -3n);
  48. assert.isTrue(1n - -2n == 3n);
  49. assert.isTrue(-1n - -2n == 1n);
  50. assert.isTrue(-2n - -1n == -1n);
  51. }
  52. },
  53. {
  54. name: "With zero",
  55. body: function () {
  56. assert.isTrue(-4n - 0n == -4n);
  57. assert.isTrue(4n - 0n == 4n);
  58. assert.isTrue(0n - 4n == -4n);
  59. assert.isTrue(0n - -4n == 4n);
  60. assert.isTrue(4n - 4n == 0n);
  61. assert.isTrue(-4n - -4n == 0n);
  62. }
  63. },
  64. {
  65. name: "With assign",
  66. body: function () {
  67. var x = 3n;
  68. var y = 20n;
  69. y -= x;
  70. assert.isTrue(x == 3n);
  71. assert.isTrue(y == 17n);
  72. y = x - 4n;
  73. assert.isTrue(y == -1n);
  74. y = 11n - x;
  75. assert.isTrue(y == 8n);
  76. }
  77. },
  78. ];
  79. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });