strictly_equal.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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: "With different types on right side",
  11. body: function () {
  12. assert.isFalse(1n === false);
  13. assert.isFalse(1n === 1);
  14. assert.isFalse(1n === "1");
  15. assert.isFalse(1n === "1.0");
  16. assert.isFalse(1n === 1.0);
  17. assert.isFalse(1n === {a: 1});
  18. assert.isFalse(1n === null);
  19. assert.isFalse(1n === undefined);
  20. assert.isFalse(1n === []);
  21. assert.isFalse(1n === Symbol());
  22. }
  23. },
  24. {
  25. name: "With different types on left side",
  26. body: function () {
  27. assert.isFalse(true === 1n);
  28. assert.isFalse(1 === 1n);
  29. assert.isFalse("1" === 1n);
  30. assert.isFalse("1.0" === 1n);
  31. assert.isFalse(1.0 === 1n);
  32. assert.isFalse({a: 1} === 1n);
  33. assert.isFalse(null === 1n);
  34. assert.isFalse(undefined === 1n);
  35. assert.isFalse([] === 1n);
  36. assert.isFalse(Symbol() === 1n);
  37. }
  38. },
  39. {
  40. name: "With same type BigInt",
  41. body: function () {
  42. assert.isTrue(0n === -0n);
  43. assert.isTrue(1n === 1n);
  44. assert.isTrue(1n === BigInt(1n));
  45. assert.isTrue(BigInt(2n) === BigInt(2n));
  46. assert.isTrue(BigInt(3n) === 3n);
  47. assert.isTrue(1n === 2n-1n);
  48. var x = 2n;
  49. var y = 2n;
  50. assert.isTrue(x === y);
  51. assert.isTrue(--x === 1n);
  52. assert.isTrue(y === 2n);
  53. assert.isFalse(x === y);
  54. }
  55. },
  56. {
  57. name: "Cross scope",
  58. body: function () {
  59. var y = 1n;
  60. var f = () => {
  61. return y;
  62. };
  63. var g = () => {
  64. return 1n;
  65. };
  66. var x = 1n;
  67. assert.isTrue(x === f());
  68. assert.isTrue(x === g());
  69. var o = {a: 1n};
  70. assert.isTrue(x == o.a);
  71. }
  72. },
  73. {
  74. name: "Marshal",
  75. body: function () {
  76. let child_global = WScript.LoadScript('var val = 5n;', 'samethread');
  77. assert.isTrue(5n === child_global.val);
  78. }
  79. },
  80. {
  81. name: "Module",
  82. body: function () {
  83. WScript.RegisterModuleSource("exporter.js", "export var val = 5n;");
  84. WScript.RegisterModuleSource("importer.js",
  85. `
  86. import { val } from 'exporter.js';
  87. assert.isTrue(5n === val);
  88. `);
  89. WScript.LoadScriptFile("importer.js", "module");
  90. }
  91. },
  92. ];
  93. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });