mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-25 14:05:15 +00:00
31 lines
1 KiB
JavaScript
31 lines
1 KiB
JavaScript
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]);
|
|
});
|
|
});
|