ladybird/Userland/Libraries/LibJS/Tests/builtins/functions/parseFloat.js
davidot 62fc3e50f3 LibJS: Make parseFloat use the new double parser
This means it no longer is locale dependent and doesn't incorrectly
accept hex floats anymore.
2022-10-23 15:48:45 +02:00

62 lines
1.7 KiB
JavaScript

test("parsing numbers", () => {
[
[0, 0],
[1, 1],
[0.23, 0.23],
[1.23, 1.23],
[0.0123e2, 1.23],
[1.23e4, 12300],
[Infinity, Infinity],
].forEach(test => {
expect(parseFloat(test[0])).toBe(test[1]);
expect(parseFloat(+test[0])).toBe(test[1]);
expect(parseFloat(-test[0])).toBe(-test[1]);
});
});
test("parsing strings", () => {
[
["0", 0],
["1", 1],
[".23", 0.23],
["1.23", 1.23],
["0.0123E+2", 1.23],
["1.23e4", 12300],
["0x1.23p5", 0],
["1.23p5", 1.23],
["1.23e42351245", Infinity],
["Infinity", Infinity],
].forEach(test => {
expect(parseFloat(test[0])).toBe(test[1]);
expect(parseFloat(`+${test[0]}`)).toBe(test[1]);
expect(parseFloat(`-${test[0]}`)).toBe(-test[1]);
expect(parseFloat(`${test[0]}foo`)).toBe(test[1]);
expect(parseFloat(`+${test[0]}foo`)).toBe(test[1]);
expect(parseFloat(`-${test[0]}foo`)).toBe(-test[1]);
expect(parseFloat(` \n \t ${test[0]} \v foo `)).toBe(test[1]);
expect(parseFloat(` \r -${test[0]} \f \n\n foo `)).toBe(-test[1]);
expect(parseFloat({ toString: () => test[0] })).toBe(test[1]);
});
});
test("parsing NaN", () => {
[
"",
[],
[],
true,
false,
null,
undefined,
NaN,
"foo123",
"foo+123",
"fooInfinity",
"foo+Infinity",
].forEach(value => {
expect(parseFloat(value)).toBeNaN();
});
expect(parseFloat()).toBeNaN();
expect(parseFloat("", 123, Infinity)).toBeNaN();
});