add.js 2.5 KB

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