diff options
Diffstat (limited to 'Userland/Libraries/LibJS/Tests/builtins/BigInt/bigint-number-mix-errors.js')
-rw-r--r-- | Userland/Libraries/LibJS/Tests/builtins/BigInt/bigint-number-mix-errors.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Tests/builtins/BigInt/bigint-number-mix-errors.js b/Userland/Libraries/LibJS/Tests/builtins/BigInt/bigint-number-mix-errors.js new file mode 100644 index 0000000000..de80b92b3a --- /dev/null +++ b/Userland/Libraries/LibJS/Tests/builtins/BigInt/bigint-number-mix-errors.js @@ -0,0 +1,31 @@ +const doTest = (operatorName, executeOperation) => { + [1, null, undefined].forEach(value => { + const messageSuffix = operatorName === "unsigned right-shift" ? "" : " and other type"; + + expect(() => { + executeOperation(1n, value); + }).toThrowWithMessage( + TypeError, + `Cannot use ${operatorName} operator with BigInt${messageSuffix}` + ); + }); +}; + +[ + ["addition", (a, b) => a + b], + ["subtraction", (a, b) => a - b], + ["multiplication", (a, b) => a * b], + ["division", (a, b) => a / b], + ["modulo", (a, b) => a % b], + ["exponentiation", (a, b) => a ** b], + ["bitwise OR", (a, b) => a | b], + ["bitwise AND", (a, b) => a & b], + ["bitwise XOR", (a, b) => a ^ b], + ["left-shift", (a, b) => a << b], + ["right-shift", (a, b) => a >> b], + ["unsigned right-shift", (a, b) => a >>> b], +].forEach(testCase => { + test(`using ${testCase[0]} operator with BigInt and other type`, () => { + doTest(testCase[0], testCase[1]); + }); +}); |