diff --git a/Libraries/LibJS/Tests/to-number-basic.js b/Libraries/LibJS/Tests/to-number-basic.js new file mode 100644 index 0000000000..e2482e8671 --- /dev/null +++ b/Libraries/LibJS/Tests/to-number-basic.js @@ -0,0 +1,33 @@ +function assert(x) { if (!x) throw 1; } + +// FIXME: Just "+x" doesn't parse currently, +// so we use "x - 0", which is effectively the same. +// "0 + x" would _not_ work in all cases. +function n(x) { return x - 0; } + +try { + assert(n(false) === 0); + assert(n(true) === 1); + assert(n(null) === 0); + assert(n([]) === 0); + assert(n([[[[[]]]]]) === 0); + assert(n([[[[[42]]]]]) === 42); + assert(n("") === 0); + assert(n("42") === 42); + assert(n(42) === 42); + // FIXME: returns NaN + // assert(n("1.23") === 1.23) + // FIXME: chokes on ASSERT + // assert(n(1.23) === 1.23); + + assert(isNaN(n(undefined))); + assert(isNaN(n({}))); + assert(isNaN(n({a: 1}))); + assert(isNaN(n([1, 2, 3]))); + assert(isNaN(n([[[["foo"]]]]))); + assert(isNaN(n("foo"))); + + console.log("PASS"); +} catch (e) { + console.log("FAIL: " + e); +}