bitwise_not.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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: "BigInt literal",
  11. body: function () {
  12. var x = ~123n;
  13. assert.isTrue(x == -124n);
  14. }
  15. },
  16. {
  17. name: "Negative BigInt literal",
  18. body: function () {
  19. var x = ~-123n;
  20. assert.isTrue(x == 122n);
  21. }
  22. },
  23. {
  24. name: "0n",
  25. body: function () {
  26. var x = ~0n;
  27. assert.isTrue(x == -1n);
  28. }
  29. },
  30. {
  31. name: "BigInt Object",
  32. body: function () {
  33. var x = ~BigInt(12345n);
  34. var y = BigInt(-12346n);
  35. assert.isTrue(x == y);
  36. }
  37. },
  38. {
  39. name: "Out of 64 bit range",
  40. body: function () {
  41. var x = ~1234567890123456789012345678901234567890n;
  42. var y = -1234567890123456789012345678901234567891n;
  43. assert.isTrue(x == y);
  44. }
  45. },
  46. {
  47. name: "Very big",
  48. body: function () {
  49. var x = eval('1234567890'.repeat(20)+'0n');
  50. var y = -x-1n;
  51. var z = ~x;
  52. assert.isTrue(z == y);
  53. }
  54. },
  55. {
  56. name: "With assign",
  57. body: function () {
  58. var x = 3n;
  59. var y = x;
  60. assert.isTrue(x == 3n);
  61. assert.isTrue(y == 3n);
  62. y = ~x;
  63. assert.isTrue(x == 3n);
  64. assert.isTrue(y == -4n);
  65. }
  66. },
  67. ];
  68. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });