1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-15 05:54:59 +00:00
serenity/Libraries/LibJS/Tests/modulo-basic.js
Brian Gianforcaro b8cef3a2d3 LibJS: Add support for floating point modulous
This change implements floating point mod based on the algorithm
used in LibM's fmod() implementation. To avoid taking a dependency
on LibM from LibJS I reimplemented the formula in LibJS.

I've incuded some of the example MDM test cases as well.
This surfaced and issue handling NaN which I've fixed as well.
2020-04-05 10:38:13 +02:00

22 lines
554 B
JavaScript

function assert(x) { if (!x) throw 1; }
try {
assert(10 % 3 === 1);
assert(10.5 % 2.5 === 0.5);
assert(-0.99 % 0.99 === -0);
// Examples form MDN:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators
assert(12 % 5 === 2);
assert(-1 % 2 === -1);
assert(1 % -2 === 1);
assert(isNaN(NaN % 2);
assert(1 % 2 === 1);
assert(2 % 3 === 2);
assert(-4 % 2 === -0);
assert(5.5 % 2 === 1.5);
console.log("PASS");
} catch (e) {
console.log("FAIL: " + e);
}