test("basic parseInt() functionality", () => { expect(parseInt("0")).toBe(0); expect(parseInt("100")).toBe(100); expect(parseInt("1000", 16)).toBe(4096); expect(parseInt('0xF', 16)).toBe(15) expect(parseInt('F', 16)).toBe(15) expect(parseInt('17', 8)).toBe(15) expect(parseInt(021, 8)).toBe(15) expect(parseInt('015', 10)).toBe(15) expect(parseInt(15.99, 10)).toBe(15) expect(parseInt('15,123', 10)).toBe(15) expect(parseInt('FXX123', 16)).toBe(15) expect(parseInt('1111', 2)).toBe(15) expect(parseInt('15 * 3', 10)).toBe(15) expect(parseInt('15e2', 10)).toBe(15) expect(parseInt('15px', 10)).toBe(15) expect(parseInt('12', 13)).toBe(15) expect(parseInt('Hello', 8)).toBeNaN(); expect(parseInt('546', 2)).toBeNaN(); expect(parseInt('-F', 16)).toBe(-15); expect(parseInt('-0F', 16)).toBe(-15); expect(parseInt('-0XF', 16)).toBe(-15); expect(parseInt(-15.1, 10)).toBe(-15); expect(parseInt('-17', 8)).toBe(-15); expect(parseInt('-15', 10)).toBe(-15); expect(parseInt('-1111', 2)).toBe(-15); expect(parseInt('-15e1', 10)).toBe(-15); expect(parseInt('-12', 13)).toBe(-15); expect(parseInt(4.7, 10)).toBe(4); expect(parseInt('0e0', 16)).toBe(224); expect(parseInt('123_456')).toBe(123); // FIXME: expect(parseInt(4.7 * 1e22, 10)).toBe(4); // FIXME: expect(parseInt(0.00000000000434, 10)).toBe(4); // FIXME: expect(parseInt(0.0000001,11)).toBe(1); // FIXME: expect(parseInt(0.000000124,10)).toBe(1); // FIXME: expect(parseInt(1e-7,10)).toBe(1); // FIXME: expect(parseInt(1000000000000100000000,10)).toBe(1); // FIXME: expect(parseInt(123000000000010000000000,10)).toBe(1); // FIXME: expect(parseInt(1e+21,10)).toBe(1); // FIXME: expect(parseInt('900719925474099267n')).toBe(900719925474099300) }); test("parseInt() radix is coerced to a number", () => { const obj = { valueOf() { return 8; } }; expect(parseInt('11', obj)).toBe(9); obj.valueOf = function() { return 1; } expect(parseInt('11', obj)).toBeNaN(); obj.valueOf = function() { return Infinity; } expect(parseInt('11', obj)).toBe(11); });