//------------------------------------------------------------------------------------------------------- | |
// Copyright (C) Microsoft. All rights reserved. | |
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
//------------------------------------------------------------------------------------------------------- | |
if (this.WScript && this.WScript.LoadScriptFile) { // Check for running in ch | |
this.WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js"); | |
} | |
var tests = [ | |
{ | |
name: "With different types on right side", | |
body: function () { | |
assert.isFalse(1n === false); | |
assert.isFalse(1n === 1); | |
assert.isFalse(1n === "1"); | |
assert.isFalse(1n === "1.0"); | |
assert.isFalse(1n === 1.0); | |
assert.isFalse(1n === {a: 1}); | |
assert.isFalse(1n === null); | |
assert.isFalse(1n === undefined); | |
assert.isFalse(1n === []); | |
assert.isFalse(1n === Symbol()); | |
} | |
}, | |
{ | |
name: "With different types on left side", | |
body: function () { | |
assert.isFalse(true === 1n); | |
assert.isFalse(1 === 1n); | |
assert.isFalse("1" === 1n); | |
assert.isFalse("1.0" === 1n); | |
assert.isFalse(1.0 === 1n); | |
assert.isFalse({a: 1} === 1n); | |
assert.isFalse(null === 1n); | |
assert.isFalse(undefined === 1n); | |
assert.isFalse([] === 1n); | |
assert.isFalse(Symbol() === 1n); | |
} | |
}, | |
{ | |
name: "With same type BigInt", | |
body: function () { | |
assert.isTrue(0n === -0n); | |
assert.isTrue(1n === 1n); | |
assert.isTrue(1n === BigInt(1n)); | |
assert.isTrue(BigInt(2n) === BigInt(2n)); | |
assert.isTrue(BigInt(3n) === 3n); | |
assert.isTrue(1n === 2n-1n); | |
var x = 2n; | |
var y = 2n; | |
assert.isTrue(x === y); | |
assert.isTrue(--x === 1n); | |
assert.isTrue(y === 2n); | |
assert.isFalse(x === y); | |
} | |
}, | |
{ | |
name: "Cross scope", | |
body: function () { | |
var y = 1n; | |
var f = () => { | |
return y; | |
}; | |
var g = () => { | |
return 1n; | |
}; | |
var x = 1n; | |
assert.isTrue(x === f()); | |
assert.isTrue(x === g()); | |
var o = {a: 1n}; | |
assert.isTrue(x == o.a); | |
} | |
}, | |
{ | |
name: "Marshal", | |
body: function () { | |
let child_global = WScript.LoadScript('var val = 5n;', 'samethread'); | |
assert.isTrue(5n === child_global.val); | |
} | |
}, | |
{ | |
name: "Module", | |
body: function () { | |
WScript.RegisterModuleSource("exporter.js", "export var val = 5n;"); | |
WScript.RegisterModuleSource("importer.js", | |
` | |
import { val } from 'exporter.js'; | |
assert.isTrue(5n === val); | |
`); | |
WScript.LoadScriptFile("importer.js", "module"); | |
} | |
}, | |
]; | |
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" }); |