This test case tests the Number constructor.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS Number.isFinite(0) is true
PASS Number.isFinite(-0) is true
PASS Number.isFinite(1) is true
PASS Number.isFinite(-1) is true
PASS Number.isFinite(1.0) is true
PASS Number.isFinite(1.1) is true
PASS Number.isFinite(-1.0) is true
PASS Number.isFinite(-1.1) is true
PASS Number.isFinite(Number.MAX_SAFE_INTEGER) is true
PASS Number.isFinite(Number.MIN_SAFE_INTEGER) is true
PASS Number.isFinite(Number.MAX_VALUE) is true
PASS Number.isFinite(Number.MIN_VALUE) is true
PASS Number.isFinite() is false
PASS Number.isFinite({}) is false
PASS Number.isFinite([]) is false
PASS Number.isFinite(true) is false
PASS Number.isFinite(false) is false
PASS Number.isFinite(null) is false
PASS Number.isFinite(Number.NaN) is false
PASS Number.isFinite(Number.POSITIVE_INFINITY) is false
PASS Number.isFinite(Number.NEGATIVE_INFINITY) is false
PASS Number.isFinite(foo) threw exception ReferenceError: Can't find variable: foo.
PASS Number.isInteger(0) is true
PASS Number.isInteger(-0) is true
PASS Number.isInteger(1) is true
PASS Number.isInteger(-1) is true
PASS Number.isInteger(1.0) is true
PASS Number.isInteger(-1.0) is true
PASS Number.isInteger(Number.MAX_SAFE_INTEGER) is true
PASS Number.isInteger(Number.MIN_SAFE_INTEGER) is true
PASS Number.isInteger(Number.MAX_VALUE) is true
PASS Number.isInteger(Number.MIN_VALUE) is false
PASS Number.isInteger(1.1) is false
PASS Number.isInteger(-1.1) is false
PASS Number.isInteger() is false
PASS Number.isInteger({}) is false
PASS Number.isInteger([]) is false
PASS Number.isInteger(true) is false
PASS Number.isInteger(false) is false
PASS Number.isInteger(null) is false
PASS Number.isInteger(Number.NaN) is false
PASS Number.isInteger(Number.POSITIVE_INFINITY) is false
PASS Number.isInteger(Number.NEGATIVE_INFINITY) is false
PASS Number.isInteger(foo) threw exception ReferenceError: Can't find variable: foo.
PASS Number.isNaN(Number.NaN) is true
PASS Number.isNaN(0) is false
PASS Number.isNaN(-0) is false
PASS Number.isNaN(1) is false
PASS Number.isNaN(-1) is false
PASS Number.isNaN(1.0) is false
PASS Number.isNaN(1.1) is false
PASS Number.isNaN(-1.0) is false
PASS Number.isNaN(-1.1) is false
PASS Number.isNaN() is false
PASS Number.isNaN({}) is false
PASS Number.isNaN([]) is false
PASS Number.isNaN(true) is false
PASS Number.isNaN(false) is false
PASS Number.isNaN(null) is false
PASS Number.isNaN(Number.POSITIVE_INFINITY) is false
PASS Number.isNaN(Number.NEGATIVE_INFINITY) is false
PASS Number.isNaN(Number.MAX_SAFE_INTEGER) is false
PASS Number.isNaN(Number.MIN_SAFE_INTEGER) is false
PASS Number.isNaN(Number.MAX_VALUE) is false
PASS Number.isNaN(Number.MIN_VALUE) is false
PASS Number.isNaN(foo) threw exception ReferenceError: Can't find variable: foo.
PASS Number.isSafeInteger(0) is true
PASS Number.isSafeInteger(-0) is true
PASS Number.isSafeInteger(1) is true
PASS Number.isSafeInteger(-1) is true
PASS Number.isSafeInteger(1.0) is true
PASS Number.isSafeInteger(-1.0) is true
PASS Number.isSafeInteger(Number.MAX_SAFE_INTEGER) is true
PASS Number.isSafeInteger(Number.MAX_SAFE_INTEGER - 1) is true
PASS Number.isSafeInteger(Number.MIN_SAFE_INTEGER) is true
PASS Number.isSafeInteger(Number.MIN_SAFE_INTEGER + 1) is true
PASS Number.isSafeInteger(1.1) is false
PASS Number.isSafeInteger(-1.1) is false
PASS Number.isSafeInteger() is false
PASS Number.isSafeInteger({}) is false
PASS Number.isSafeInteger([]) is false
PASS Number.isSafeInteger(true) is false
PASS Number.isSafeInteger(false) is false
PASS Number.isSafeInteger(null) is false
PASS Number.isSafeInteger(Number.NaN) is false
PASS Number.isSafeInteger(Number.MAX_VALUE) is false
PASS Number.isSafeInteger(Number.MIN_VALUE) is false
PASS Number.isSafeInteger(Number.POSITIVE_INFINITY) is false
PASS Number.isSafeInteger(Number.NEGATIVE_INFINITY) is false
PASS Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1) is false
PASS Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1) is false
PASS Number.isSafeInteger(foo) threw exception ReferenceError: Can't find variable: foo.
PASS Number.parseFloat("0") is 0
PASS Number.parseFloat("-0") is -0
PASS Number.parseFloat("1") is 1
PASS Number.parseFloat("-1") is -1
PASS Number.parseFloat("1.1") is 1.1
PASS Number.parseFloat("-1.1") is -1.1
PASS Number.parseFloat("10E6") is 10E6
PASS Number.parseFloat("0xA") is 0
PASS Number.parseFloat("050") is 50
PASS Number.parseFloat(050) is 40
PASS Number.parseFloat("0x20") is 0
PASS Number.parseFloat(0x20) is 32
PASS Number.parseFloat() is NaN
PASS Number.parseFloat({}) is NaN
PASS Number.parseFloat([]) is NaN
PASS Number.parseFloat(true) is NaN
PASS Number.parseFloat(false) is NaN
PASS Number.parseFloat(null) is NaN
PASS Number.parseFloat(undefined) is NaN
PASS Number.parseFloat(Number.NaN) is NaN
PASS Number.parseFloat("1.7976931348623157E308") is 1.7976931348623157e+308
PASS Number.parseFloat("1.80E308") is Infinity
PASS Number.parseFloat("5E-324") is 5e-324
PASS Number.parseFloat("5E-325") is 0
PASS Number.parseFloat("20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") is 2e+307
PASS Number.parseFloat("200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") is Infinity
PASS Number.parseFloat(foo) threw exception ReferenceError: Can't find variable: foo.
PASS Number.parseInt is parseInt
PASS var numberParseInt = Number.parseInt; parseInt = function () {}; numberParseInt is Number.parseInt
PASS Number.parseInt.length is 2
PASS Number.parseInt("0") is 0
PASS Number.parseInt("-0") is -0
PASS Number.parseInt("1") is 1
PASS Number.parseInt("-1") is -1
PASS Number.parseInt("1.1") is 1
PASS Number.parseInt("-1.1") is -1
PASS Number.parseInt("10E6") is 10
PASS Number.parseInt("0xA") is 10
PASS Number.parseInt("050") is 50
PASS Number.parseInt("050", 8) is 40
PASS Number.parseInt(050) is 40
PASS Number.parseInt("0x20") is 32
PASS Number.parseInt("0x20", 16) is 32
PASS Number.parseInt("20", 16) is 32
PASS Number.parseInt(0x20) is 32
PASS Number.parseInt() is NaN
PASS Number.parseInt({}) is NaN
PASS Number.parseInt([]) is NaN
PASS Number.parseInt(true) is NaN
PASS Number.parseInt(false) is NaN
PASS Number.parseInt(null) is NaN
PASS Number.parseInt(undefined) is NaN
PASS Number.parseInt(Number.NaN) is NaN
PASS Number.parseInt("1.7976931348623157E308") is 1
PASS Number.parseInt("1.80E308") is 1
PASS Number.parseInt("5E-324") is 5
PASS Number.parseInt("5E-325") is 5
PASS Number.parseInt("20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") is 2e+307
PASS Number.parseInt("200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000") is Infinity
PASS Number.parseInt(foo) threw exception ReferenceError: Can't find variable: foo.
PASS successfullyParsed is true

TEST COMPLETE

