assertEq(Number.isInteger(4), true); assertEq(Number.isInteger(4.), true); assertEq(Number.isInteger(4.2), false); assertEq(Number.isInteger(0.), true); assertEq(Number.isInteger(-0.), true); assertEq(Number.isInteger(Infinity), false); assertEq(Number.isInteger(-Infinity), false); assertEq(Number.isInteger(NaN), false); assertEq(Number.isInteger(true), false); assertEq(Number.isInteger(false), false); assertEq(Number.isInteger({valueOf: function () { return 3; }}), false); assertEq(Number.isInteger({valueOf: function () { return 0/0; }}), false); assertEq(Number.isInteger({ valueOf: function() { throw 17; } }), false); assertEq(Number.isInteger({ toString: function() { throw 17; } }), false); assertEq(Number.isInteger({ valueOf: function() { throw 17; }, toString: function() { throw 42; } }), false);