From d74ad81402c27113b2ed5586bc369703d6be61c4 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Mon, 13 Apr 2020 10:31:13 -0700 Subject: [PATCH] js/LibJS: Move test functions to pure javascript. The addition of assert functions to Userland/js was done before we had load(..) implemented. Now that it exists, it seems like the right move the test helper functions to pure javascript instead of poluting js with random global functions. --- Libraries/LibJS/Tests/Array.js | 2 ++ Libraries/LibJS/Tests/Array.prototype.pop.js | 2 ++ .../LibJS/Tests/Array.prototype.shift.js | 2 ++ .../LibJS/Tests/Array.prototype.toString.js | 2 ++ Libraries/LibJS/Tests/Boolean.js | 2 ++ Libraries/LibJS/Tests/Boolean.prototype.js | 2 ++ .../LibJS/Tests/Boolean.prototype.toString.js | 2 ++ .../LibJS/Tests/Boolean.prototype.valueOf.js | 2 ++ Libraries/LibJS/Tests/Date.now.js | 2 ++ .../LibJS/Tests/Date.prototype.getDate.js | 2 ++ .../LibJS/Tests/Date.prototype.getDay.js | 2 ++ .../LibJS/Tests/Date.prototype.getFullYear.js | 2 ++ .../LibJS/Tests/Date.prototype.getHours.js | 2 ++ .../Tests/Date.prototype.getMilliseconds.js | 2 ++ .../LibJS/Tests/Date.prototype.getMinutes.js | 2 ++ .../LibJS/Tests/Date.prototype.getMonth.js | 2 ++ .../LibJS/Tests/Date.prototype.getSeconds.js | 2 ++ .../LibJS/Tests/Date.prototype.getTime.js | 2 ++ Libraries/LibJS/Tests/Error.js | 2 ++ Libraries/LibJS/Tests/Error.prototype.name.js | 2 ++ .../LibJS/Tests/Error.prototype.toString.js | 2 ++ Libraries/LibJS/Tests/Function.js | 2 ++ .../LibJS/Tests/Function.prototype.apply.js | 2 ++ .../LibJS/Tests/Function.prototype.call.js | 2 ++ .../Tests/Function.prototype.toString.js | 2 ++ Libraries/LibJS/Tests/Infinity-basic.js | 2 ++ Libraries/LibJS/Tests/Math-constants.js | 2 ++ Libraries/LibJS/Tests/Math.abs.js | 2 ++ Libraries/LibJS/Tests/Math.ceil.js | 2 ++ Libraries/LibJS/Tests/Math.cos.js | 2 ++ Libraries/LibJS/Tests/Math.max.js | 2 ++ Libraries/LibJS/Tests/Math.min.js | 2 ++ Libraries/LibJS/Tests/Math.sin.js | 2 ++ Libraries/LibJS/Tests/Math.sqrt.js | 2 ++ Libraries/LibJS/Tests/Math.tan.js | 2 ++ Libraries/LibJS/Tests/Math.trunc.js | 2 ++ Libraries/LibJS/Tests/NaN-basic.js | 2 ++ Libraries/LibJS/Tests/Number-constants.js | 2 ++ Libraries/LibJS/Tests/Number.isSafeInteger.js | 2 ++ Libraries/LibJS/Tests/Number.js | 2 ++ Libraries/LibJS/Tests/Number.prototype.js | 2 ++ .../LibJS/Tests/Object.defineProperty.js | 2 ++ .../LibJS/Tests/Object.getOwnPropertyNames.js | 2 ++ .../LibJS/Tests/Object.getPrototypeOf.js | 2 ++ .../Tests/Object.prototype.constructor.js | 2 ++ .../Tests/Object.prototype.hasOwnProperty.js | 2 ++ Libraries/LibJS/Tests/Object.prototype.js | 2 ++ .../LibJS/Tests/Object.prototype.toString.js | 2 ++ .../LibJS/Tests/String.prototype.charAt.js | 2 ++ .../LibJS/Tests/String.prototype.indexOf.js | 2 ++ Libraries/LibJS/Tests/String.prototype.js | 2 ++ .../LibJS/Tests/String.prototype.padEnd.js | 2 ++ .../LibJS/Tests/String.prototype.padStart.js | 2 ++ .../Tests/String.prototype.startsWith.js | 2 ++ .../Tests/String.prototype.toLowerCase.js | 2 ++ .../LibJS/Tests/String.prototype.toString.js | 2 ++ .../Tests/String.prototype.toUpperCase.js | 2 ++ Libraries/LibJS/Tests/array-basic.js | 2 ++ Libraries/LibJS/Tests/arrow-functions.js | 2 ++ .../Tests/binary-bitwise-operators-basic.js | 2 ++ Libraries/LibJS/Tests/continue-basic.js | 2 ++ Libraries/LibJS/Tests/do-while-basic.js | 2 ++ .../LibJS/Tests/exception-ReferenceError.js | 2 ++ Libraries/LibJS/Tests/exponentiation-basic.js | 2 ++ Libraries/LibJS/Tests/for-basic.js | 2 ++ Libraries/LibJS/Tests/for-no-curlies.js | 2 ++ Libraries/LibJS/Tests/function-TypeError.js | 2 ++ Libraries/LibJS/Tests/function-length.js | 2 ++ Libraries/LibJS/Tests/function-missing-arg.js | 2 ++ .../LibJS/Tests/function-this-in-arguments.js | 2 ++ Libraries/LibJS/Tests/instanceof-basic.js | 2 ++ .../LibJS/Tests/invalid-lhs-in-assignment.js | 2 ++ Libraries/LibJS/Tests/let-scoping.js | 2 ++ .../LibJS/Tests/logical-expressions-basic.js | 2 ++ .../logical-expressions-short-circuit.js | 2 ++ Libraries/LibJS/Tests/modulo-basic.js | 2 ++ .../LibJS/Tests/numeric-literals-basic.js | 2 ++ Libraries/LibJS/Tests/object-basic.js | 2 ++ .../LibJS/Tests/parser-unary-associativity.js | 2 ++ Libraries/LibJS/Tests/run-tests | 1 + Libraries/LibJS/Tests/switch-break.js | 2 ++ Libraries/LibJS/Tests/ternary-basic.js | 2 ++ Libraries/LibJS/Tests/test-common.js | 16 ++++++++++++++++ Libraries/LibJS/Tests/throw-basic.js | 2 ++ Libraries/LibJS/Tests/to-number-basic.js | 2 ++ Libraries/LibJS/Tests/typeof-basic.js | 2 ++ .../LibJS/Tests/var-multiple-declarator.js | 2 ++ Libraries/LibJS/Tests/var-scoping.js | 2 ++ Libraries/LibJS/Tests/variable-declaration.js | 2 ++ Libraries/LibJS/Tests/variable-undefined.js | 2 ++ Userland/js.cpp | 19 ------------------- 91 files changed, 193 insertions(+), 19 deletions(-) create mode 100644 Libraries/LibJS/Tests/test-common.js diff --git a/Libraries/LibJS/Tests/Array.js b/Libraries/LibJS/Tests/Array.js index 519bb54d8b..122f1501a7 100644 --- a/Libraries/LibJS/Tests/Array.js +++ b/Libraries/LibJS/Tests/Array.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Array.length === 1); assert(Array.prototype.length === 0); diff --git a/Libraries/LibJS/Tests/Array.prototype.pop.js b/Libraries/LibJS/Tests/Array.prototype.pop.js index c6ce64554b..9dce8d4c29 100644 --- a/Libraries/LibJS/Tests/Array.prototype.pop.js +++ b/Libraries/LibJS/Tests/Array.prototype.pop.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = [1, 2, 3]; var value = a.pop(); diff --git a/Libraries/LibJS/Tests/Array.prototype.shift.js b/Libraries/LibJS/Tests/Array.prototype.shift.js index 97f748744b..44cb316203 100644 --- a/Libraries/LibJS/Tests/Array.prototype.shift.js +++ b/Libraries/LibJS/Tests/Array.prototype.shift.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = [1, 2, 3]; var value = a.shift(); diff --git a/Libraries/LibJS/Tests/Array.prototype.toString.js b/Libraries/LibJS/Tests/Array.prototype.toString.js index afffee48ad..3bd288f99a 100644 --- a/Libraries/LibJS/Tests/Array.prototype.toString.js +++ b/Libraries/LibJS/Tests/Array.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = [1, 2, 3]; assert(a.toString() === '1,2,3'); diff --git a/Libraries/LibJS/Tests/Boolean.js b/Libraries/LibJS/Tests/Boolean.js index 1a9f8593f1..c77bc04f39 100644 --- a/Libraries/LibJS/Tests/Boolean.js +++ b/Libraries/LibJS/Tests/Boolean.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Boolean.length === 1); assert(typeof new Boolean() === "object"); diff --git a/Libraries/LibJS/Tests/Boolean.prototype.js b/Libraries/LibJS/Tests/Boolean.prototype.js index de444128c3..31cb114a82 100644 --- a/Libraries/LibJS/Tests/Boolean.prototype.js +++ b/Libraries/LibJS/Tests/Boolean.prototype.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof Boolean.prototype === "object"); assert(Boolean.prototype.valueOf() === false); diff --git a/Libraries/LibJS/Tests/Boolean.prototype.toString.js b/Libraries/LibJS/Tests/Boolean.prototype.toString.js index 9a8846af4b..843dbec593 100644 --- a/Libraries/LibJS/Tests/Boolean.prototype.toString.js +++ b/Libraries/LibJS/Tests/Boolean.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var foo = true; assert(foo.toString() === "true"); diff --git a/Libraries/LibJS/Tests/Boolean.prototype.valueOf.js b/Libraries/LibJS/Tests/Boolean.prototype.valueOf.js index 7cfba10495..21ba4df190 100644 --- a/Libraries/LibJS/Tests/Boolean.prototype.valueOf.js +++ b/Libraries/LibJS/Tests/Boolean.prototype.valueOf.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var foo = true; assert(foo.valueOf() === true); diff --git a/Libraries/LibJS/Tests/Date.now.js b/Libraries/LibJS/Tests/Date.now.js index 5459242cd4..72c5cc7930 100644 --- a/Libraries/LibJS/Tests/Date.now.js +++ b/Libraries/LibJS/Tests/Date.now.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var last = 0; for (var i = 0; i < 100; ++i) { diff --git a/Libraries/LibJS/Tests/Date.prototype.getDate.js b/Libraries/LibJS/Tests/Date.prototype.getDate.js index e70dc7623c..4ad6a3b390 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getDate.js +++ b/Libraries/LibJS/Tests/Date.prototype.getDate.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getDate())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getDay.js b/Libraries/LibJS/Tests/Date.prototype.getDay.js index 631f386ae3..94dbe1622b 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getDay.js +++ b/Libraries/LibJS/Tests/Date.prototype.getDay.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getDay())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getFullYear.js b/Libraries/LibJS/Tests/Date.prototype.getFullYear.js index 6a102f2395..44416882c9 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getFullYear.js +++ b/Libraries/LibJS/Tests/Date.prototype.getFullYear.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getFullYear())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getHours.js b/Libraries/LibJS/Tests/Date.prototype.getHours.js index b09e000a6e..2e7984b497 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getHours.js +++ b/Libraries/LibJS/Tests/Date.prototype.getHours.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getHours())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getMilliseconds.js b/Libraries/LibJS/Tests/Date.prototype.getMilliseconds.js index 95f9d19916..49ef970fe8 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getMilliseconds.js +++ b/Libraries/LibJS/Tests/Date.prototype.getMilliseconds.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getMilliseconds())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getMinutes.js b/Libraries/LibJS/Tests/Date.prototype.getMinutes.js index bf09c0278e..380f864ed4 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getMinutes.js +++ b/Libraries/LibJS/Tests/Date.prototype.getMinutes.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getMinutes())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getMonth.js b/Libraries/LibJS/Tests/Date.prototype.getMonth.js index a6503b9b32..3556770058 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getMonth.js +++ b/Libraries/LibJS/Tests/Date.prototype.getMonth.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getMonth())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getSeconds.js b/Libraries/LibJS/Tests/Date.prototype.getSeconds.js index e96272f9d6..7247bc9f13 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getSeconds.js +++ b/Libraries/LibJS/Tests/Date.prototype.getSeconds.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getSeconds())); diff --git a/Libraries/LibJS/Tests/Date.prototype.getTime.js b/Libraries/LibJS/Tests/Date.prototype.getTime.js index a7a54ee3fc..8c352465fe 100644 --- a/Libraries/LibJS/Tests/Date.prototype.getTime.js +++ b/Libraries/LibJS/Tests/Date.prototype.getTime.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var d = new Date(); assert(!isNaN(d.getTime())); diff --git a/Libraries/LibJS/Tests/Error.js b/Libraries/LibJS/Tests/Error.js index ddf78f28a9..0338dded12 100644 --- a/Libraries/LibJS/Tests/Error.js +++ b/Libraries/LibJS/Tests/Error.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var e; diff --git a/Libraries/LibJS/Tests/Error.prototype.name.js b/Libraries/LibJS/Tests/Error.prototype.name.js index 991cb92aee..48123543df 100644 --- a/Libraries/LibJS/Tests/Error.prototype.name.js +++ b/Libraries/LibJS/Tests/Error.prototype.name.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var changedInstance = new Error(""); changedInstance.name = 'NewCustomError'; diff --git a/Libraries/LibJS/Tests/Error.prototype.toString.js b/Libraries/LibJS/Tests/Error.prototype.toString.js index 88a785fc23..e4f1d7db1e 100644 --- a/Libraries/LibJS/Tests/Error.prototype.toString.js +++ b/Libraries/LibJS/Tests/Error.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Error().toString() === "Error"); assert(Error(undefined).toString() === "Error"); diff --git a/Libraries/LibJS/Tests/Function.js b/Libraries/LibJS/Tests/Function.js index 1f4b232b6b..b832f27798 100644 --- a/Libraries/LibJS/Tests/Function.js +++ b/Libraries/LibJS/Tests/Function.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Function.length === 1); assert(Function.prototype.length === 0); diff --git a/Libraries/LibJS/Tests/Function.prototype.apply.js b/Libraries/LibJS/Tests/Function.prototype.apply.js index 04f2fbd71b..f3e20d3fb2 100644 --- a/Libraries/LibJS/Tests/Function.prototype.apply.js +++ b/Libraries/LibJS/Tests/Function.prototype.apply.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { function Foo(arg) { this.foo = arg; diff --git a/Libraries/LibJS/Tests/Function.prototype.call.js b/Libraries/LibJS/Tests/Function.prototype.call.js index 30e7725896..29eb153ea5 100644 --- a/Libraries/LibJS/Tests/Function.prototype.call.js +++ b/Libraries/LibJS/Tests/Function.prototype.call.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { function Foo(arg) { this.foo = arg; diff --git a/Libraries/LibJS/Tests/Function.prototype.toString.js b/Libraries/LibJS/Tests/Function.prototype.toString.js index 231a49458d..4f2e1cf5e6 100644 --- a/Libraries/LibJS/Tests/Function.prototype.toString.js +++ b/Libraries/LibJS/Tests/Function.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert((function() {}).toString() === "function () {\n ???\n}"); assert((function(foo) {}).toString() === "function (foo) {\n ???\n}"); diff --git a/Libraries/LibJS/Tests/Infinity-basic.js b/Libraries/LibJS/Tests/Infinity-basic.js index 33164410f4..9bab327822 100644 --- a/Libraries/LibJS/Tests/Infinity-basic.js +++ b/Libraries/LibJS/Tests/Infinity-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Infinity + "" === "Infinity"); assert(-Infinity + "" === "-Infinity"); diff --git a/Libraries/LibJS/Tests/Math-constants.js b/Libraries/LibJS/Tests/Math-constants.js index 0c402ddf93..9fe84c4bee 100644 --- a/Libraries/LibJS/Tests/Math-constants.js +++ b/Libraries/LibJS/Tests/Math-constants.js @@ -1,3 +1,5 @@ +load("test-common.js"); + // Borrowed from LibM/TestMath.cpp :^) function expectClose(a, b) { assert(Math.abs(a - b) < 0.000001); } diff --git a/Libraries/LibJS/Tests/Math.abs.js b/Libraries/LibJS/Tests/Math.abs.js index 0c2ed1e0ab..583af24dfa 100644 --- a/Libraries/LibJS/Tests/Math.abs.js +++ b/Libraries/LibJS/Tests/Math.abs.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.abs('-1') === 1); assert(Math.abs(-2) === 2); diff --git a/Libraries/LibJS/Tests/Math.ceil.js b/Libraries/LibJS/Tests/Math.ceil.js index 9ed8ff8960..56a6ff6269 100644 --- a/Libraries/LibJS/Tests/Math.ceil.js +++ b/Libraries/LibJS/Tests/Math.ceil.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.ceil(0.95) === 1); assert(Math.ceil(4) === 4); diff --git a/Libraries/LibJS/Tests/Math.cos.js b/Libraries/LibJS/Tests/Math.cos.js index 2af3d7dbb8..e483243ae4 100644 --- a/Libraries/LibJS/Tests/Math.cos.js +++ b/Libraries/LibJS/Tests/Math.cos.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.cos(0) === 1); assert(Math.cos(null) === 1); diff --git a/Libraries/LibJS/Tests/Math.max.js b/Libraries/LibJS/Tests/Math.max.js index 2b4a814a9f..7b01e44102 100644 --- a/Libraries/LibJS/Tests/Math.max.js +++ b/Libraries/LibJS/Tests/Math.max.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.max.length === 2); assert(Math.max() === -Infinity); diff --git a/Libraries/LibJS/Tests/Math.min.js b/Libraries/LibJS/Tests/Math.min.js index 35b8746ee6..fbe26bd27b 100644 --- a/Libraries/LibJS/Tests/Math.min.js +++ b/Libraries/LibJS/Tests/Math.min.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.min.length === 2); assert(Math.min(1) === 1); diff --git a/Libraries/LibJS/Tests/Math.sin.js b/Libraries/LibJS/Tests/Math.sin.js index bd93e66890..50a591b1c9 100644 --- a/Libraries/LibJS/Tests/Math.sin.js +++ b/Libraries/LibJS/Tests/Math.sin.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.sin(0) === 0); assert(Math.sin(null) === 0); diff --git a/Libraries/LibJS/Tests/Math.sqrt.js b/Libraries/LibJS/Tests/Math.sqrt.js index 07a57e6507..622fd8b198 100644 --- a/Libraries/LibJS/Tests/Math.sqrt.js +++ b/Libraries/LibJS/Tests/Math.sqrt.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.sqrt(9) === 3); console.log("PASS"); diff --git a/Libraries/LibJS/Tests/Math.tan.js b/Libraries/LibJS/Tests/Math.tan.js index 07b9ff73f4..636fe2add7 100644 --- a/Libraries/LibJS/Tests/Math.tan.js +++ b/Libraries/LibJS/Tests/Math.tan.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Math.tan(0) === 0); assert(Math.tan(null) === 0); diff --git a/Libraries/LibJS/Tests/Math.trunc.js b/Libraries/LibJS/Tests/Math.trunc.js index ec2bf0c537..79b257b176 100644 --- a/Libraries/LibJS/Tests/Math.trunc.js +++ b/Libraries/LibJS/Tests/Math.trunc.js @@ -1,3 +1,5 @@ +load("test-common.js") + try { assert(Math.trunc(13.37) === 13); assert(Math.trunc(42.84) === 42); diff --git a/Libraries/LibJS/Tests/NaN-basic.js b/Libraries/LibJS/Tests/NaN-basic.js index 17b51711d6..188d9347e3 100644 --- a/Libraries/LibJS/Tests/NaN-basic.js +++ b/Libraries/LibJS/Tests/NaN-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var nan = undefined + 1; assert(nan + "" == "NaN"); diff --git a/Libraries/LibJS/Tests/Number-constants.js b/Libraries/LibJS/Tests/Number-constants.js index 7d52bce470..ce2e7a67f9 100644 --- a/Libraries/LibJS/Tests/Number-constants.js +++ b/Libraries/LibJS/Tests/Number-constants.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Number.EPSILON === 2 ** -52); assert(Number.EPSILON > 0); diff --git a/Libraries/LibJS/Tests/Number.isSafeInteger.js b/Libraries/LibJS/Tests/Number.isSafeInteger.js index ee7e2308e7..407b999d9a 100644 --- a/Libraries/LibJS/Tests/Number.isSafeInteger.js +++ b/Libraries/LibJS/Tests/Number.isSafeInteger.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Number.isSafeInteger.length === 1); assert(Number.isSafeInteger(0) === true); diff --git a/Libraries/LibJS/Tests/Number.js b/Libraries/LibJS/Tests/Number.js index 10a110840f..ba16723525 100644 --- a/Libraries/LibJS/Tests/Number.js +++ b/Libraries/LibJS/Tests/Number.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Number.length === 1); assert(typeof Number() === "number"); diff --git a/Libraries/LibJS/Tests/Number.prototype.js b/Libraries/LibJS/Tests/Number.prototype.js index 1ff4705fc0..f42f913fba 100644 --- a/Libraries/LibJS/Tests/Number.prototype.js +++ b/Libraries/LibJS/Tests/Number.prototype.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof Number.prototype === "object"); assert(Number.prototype.valueOf() === 0); diff --git a/Libraries/LibJS/Tests/Object.defineProperty.js b/Libraries/LibJS/Tests/Object.defineProperty.js index d63e89beb2..fee37f9e78 100644 --- a/Libraries/LibJS/Tests/Object.defineProperty.js +++ b/Libraries/LibJS/Tests/Object.defineProperty.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o = {}; Object.defineProperty(o, "foo", { value: 1, writable: false, enumerable: false }); diff --git a/Libraries/LibJS/Tests/Object.getOwnPropertyNames.js b/Libraries/LibJS/Tests/Object.getOwnPropertyNames.js index 990dbf2801..cbb90108fc 100644 --- a/Libraries/LibJS/Tests/Object.getOwnPropertyNames.js +++ b/Libraries/LibJS/Tests/Object.getOwnPropertyNames.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var names = Object.getOwnPropertyNames([1, 2, 3]); diff --git a/Libraries/LibJS/Tests/Object.getPrototypeOf.js b/Libraries/LibJS/Tests/Object.getPrototypeOf.js index 08ccc6a0da..3e35fcb797 100644 --- a/Libraries/LibJS/Tests/Object.getPrototypeOf.js +++ b/Libraries/LibJS/Tests/Object.getPrototypeOf.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o1 = new Object(); var o2 = {}; diff --git a/Libraries/LibJS/Tests/Object.prototype.constructor.js b/Libraries/LibJS/Tests/Object.prototype.constructor.js index 9f9218fd6d..06f5921bf8 100644 --- a/Libraries/LibJS/Tests/Object.prototype.constructor.js +++ b/Libraries/LibJS/Tests/Object.prototype.constructor.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(Array.prototype.constructor === Array) assert(Boolean.prototype.constructor === Boolean) diff --git a/Libraries/LibJS/Tests/Object.prototype.hasOwnProperty.js b/Libraries/LibJS/Tests/Object.prototype.hasOwnProperty.js index 225394939f..0a12f2ee52 100644 --- a/Libraries/LibJS/Tests/Object.prototype.hasOwnProperty.js +++ b/Libraries/LibJS/Tests/Object.prototype.hasOwnProperty.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o = {}; o.foo = 1; diff --git a/Libraries/LibJS/Tests/Object.prototype.js b/Libraries/LibJS/Tests/Object.prototype.js index 0d794442d5..549716bb65 100644 --- a/Libraries/LibJS/Tests/Object.prototype.js +++ b/Libraries/LibJS/Tests/Object.prototype.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o = new Object(); Object.prototype.foo = 123; diff --git a/Libraries/LibJS/Tests/Object.prototype.toString.js b/Libraries/LibJS/Tests/Object.prototype.toString.js index 2672b70f1b..94b9c1f2b2 100644 --- a/Libraries/LibJS/Tests/Object.prototype.toString.js +++ b/Libraries/LibJS/Tests/Object.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof Object.prototype.toString() === "string"); console.log("PASS"); diff --git a/Libraries/LibJS/Tests/String.prototype.charAt.js b/Libraries/LibJS/Tests/String.prototype.charAt.js index 994fed659d..9e9fbd96b4 100644 --- a/Libraries/LibJS/Tests/String.prototype.charAt.js +++ b/Libraries/LibJS/Tests/String.prototype.charAt.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var s = "foobar" assert(typeof s === "string"); diff --git a/Libraries/LibJS/Tests/String.prototype.indexOf.js b/Libraries/LibJS/Tests/String.prototype.indexOf.js index 117093b61e..b0488e955c 100644 --- a/Libraries/LibJS/Tests/String.prototype.indexOf.js +++ b/Libraries/LibJS/Tests/String.prototype.indexOf.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var s = "hello friends" diff --git a/Libraries/LibJS/Tests/String.prototype.js b/Libraries/LibJS/Tests/String.prototype.js index 4bc304babf..a3b0228224 100644 --- a/Libraries/LibJS/Tests/String.prototype.js +++ b/Libraries/LibJS/Tests/String.prototype.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof Object.getPrototypeOf("") === "object"); assert(Object.getPrototypeOf("").valueOf() === ''); diff --git a/Libraries/LibJS/Tests/String.prototype.padEnd.js b/Libraries/LibJS/Tests/String.prototype.padEnd.js index a654ec8b46..18ea5377cd 100644 --- a/Libraries/LibJS/Tests/String.prototype.padEnd.js +++ b/Libraries/LibJS/Tests/String.prototype.padEnd.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(String.prototype.padEnd.length === 1); diff --git a/Libraries/LibJS/Tests/String.prototype.padStart.js b/Libraries/LibJS/Tests/String.prototype.padStart.js index 322d1c7a35..0b2b99d803 100644 --- a/Libraries/LibJS/Tests/String.prototype.padStart.js +++ b/Libraries/LibJS/Tests/String.prototype.padStart.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(String.prototype.padStart.length === 1); diff --git a/Libraries/LibJS/Tests/String.prototype.startsWith.js b/Libraries/LibJS/Tests/String.prototype.startsWith.js index fe7c511681..2ed6d486f5 100644 --- a/Libraries/LibJS/Tests/String.prototype.startsWith.js +++ b/Libraries/LibJS/Tests/String.prototype.startsWith.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var s = "foobar"; assert(s.startsWith("f") === true); diff --git a/Libraries/LibJS/Tests/String.prototype.toLowerCase.js b/Libraries/LibJS/Tests/String.prototype.toLowerCase.js index a1f6b58993..571f26e729 100644 --- a/Libraries/LibJS/Tests/String.prototype.toLowerCase.js +++ b/Libraries/LibJS/Tests/String.prototype.toLowerCase.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(String.prototype.toLowerCase.length === 0); diff --git a/Libraries/LibJS/Tests/String.prototype.toString.js b/Libraries/LibJS/Tests/String.prototype.toString.js index ffb25c758b..3be304ed1e 100644 --- a/Libraries/LibJS/Tests/String.prototype.toString.js +++ b/Libraries/LibJS/Tests/String.prototype.toString.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(String.prototype.toString.length === 0) assert("".toString() === ""); diff --git a/Libraries/LibJS/Tests/String.prototype.toUpperCase.js b/Libraries/LibJS/Tests/String.prototype.toUpperCase.js index 2a68e1e770..c1532dfa22 100644 --- a/Libraries/LibJS/Tests/String.prototype.toUpperCase.js +++ b/Libraries/LibJS/Tests/String.prototype.toUpperCase.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(String.prototype.toUpperCase.length === 0); diff --git a/Libraries/LibJS/Tests/array-basic.js b/Libraries/LibJS/Tests/array-basic.js index 7298fab672..bfd1064da7 100644 --- a/Libraries/LibJS/Tests/array-basic.js +++ b/Libraries/LibJS/Tests/array-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = [1, 2, 3]; diff --git a/Libraries/LibJS/Tests/arrow-functions.js b/Libraries/LibJS/Tests/arrow-functions.js index d2db8fdaf5..56537de34c 100644 --- a/Libraries/LibJS/Tests/arrow-functions.js +++ b/Libraries/LibJS/Tests/arrow-functions.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { let getNumber = () => 42; assert(getNumber() === 42); diff --git a/Libraries/LibJS/Tests/binary-bitwise-operators-basic.js b/Libraries/LibJS/Tests/binary-bitwise-operators-basic.js index 704a00349e..09eb1ae036 100644 --- a/Libraries/LibJS/Tests/binary-bitwise-operators-basic.js +++ b/Libraries/LibJS/Tests/binary-bitwise-operators-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert((0 | 0) === 0); assert((0 | 1) === 1); diff --git a/Libraries/LibJS/Tests/continue-basic.js b/Libraries/LibJS/Tests/continue-basic.js index a0d59cdeb6..28d2cfa588 100644 --- a/Libraries/LibJS/Tests/continue-basic.js +++ b/Libraries/LibJS/Tests/continue-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var j = 0; for (var i = 0; i < 9; ++i) { diff --git a/Libraries/LibJS/Tests/do-while-basic.js b/Libraries/LibJS/Tests/do-while-basic.js index 5ca6d50791..9472ec4808 100644 --- a/Libraries/LibJS/Tests/do-while-basic.js +++ b/Libraries/LibJS/Tests/do-while-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var number = 0; do { diff --git a/Libraries/LibJS/Tests/exception-ReferenceError.js b/Libraries/LibJS/Tests/exception-ReferenceError.js index b26804a316..1bbf506bdc 100644 --- a/Libraries/LibJS/Tests/exception-ReferenceError.js +++ b/Libraries/LibJS/Tests/exception-ReferenceError.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { i < 3; } catch (e) { diff --git a/Libraries/LibJS/Tests/exponentiation-basic.js b/Libraries/LibJS/Tests/exponentiation-basic.js index 8e7c7c74f2..0684c46889 100644 --- a/Libraries/LibJS/Tests/exponentiation-basic.js +++ b/Libraries/LibJS/Tests/exponentiation-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(2 ** 0 === 1); assert(2 ** 1 === 2); diff --git a/Libraries/LibJS/Tests/for-basic.js b/Libraries/LibJS/Tests/for-basic.js index c68c2b9972..747a574cb1 100644 --- a/Libraries/LibJS/Tests/for-basic.js +++ b/Libraries/LibJS/Tests/for-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = []; for (var i = 0; i < 3; ++i) { diff --git a/Libraries/LibJS/Tests/for-no-curlies.js b/Libraries/LibJS/Tests/for-no-curlies.js index 8c54819a2d..6b808dad91 100644 --- a/Libraries/LibJS/Tests/for-no-curlies.js +++ b/Libraries/LibJS/Tests/for-no-curlies.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var number = 0; diff --git a/Libraries/LibJS/Tests/function-TypeError.js b/Libraries/LibJS/Tests/function-TypeError.js index cd7870c952..8d63265f49 100644 --- a/Libraries/LibJS/Tests/function-TypeError.js +++ b/Libraries/LibJS/Tests/function-TypeError.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { try { var b = true; diff --git a/Libraries/LibJS/Tests/function-length.js b/Libraries/LibJS/Tests/function-length.js index 7a3e69cc32..05cfc2a66a 100644 --- a/Libraries/LibJS/Tests/function-length.js +++ b/Libraries/LibJS/Tests/function-length.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { function foo() { } assert(foo.length === 0); diff --git a/Libraries/LibJS/Tests/function-missing-arg.js b/Libraries/LibJS/Tests/function-missing-arg.js index 48810a38e7..39c10b6649 100644 --- a/Libraries/LibJS/Tests/function-missing-arg.js +++ b/Libraries/LibJS/Tests/function-missing-arg.js @@ -1,3 +1,5 @@ +load("test-common.js"); + function foo(a, b) { return a + b; } try { diff --git a/Libraries/LibJS/Tests/function-this-in-arguments.js b/Libraries/LibJS/Tests/function-this-in-arguments.js index 0bfa3de834..4fb2a3248f 100644 --- a/Libraries/LibJS/Tests/function-this-in-arguments.js +++ b/Libraries/LibJS/Tests/function-this-in-arguments.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof this === "object"); assert(this === globalThis); diff --git a/Libraries/LibJS/Tests/instanceof-basic.js b/Libraries/LibJS/Tests/instanceof-basic.js index 0db8dbdc0a..29d22e7e60 100644 --- a/Libraries/LibJS/Tests/instanceof-basic.js +++ b/Libraries/LibJS/Tests/instanceof-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { function Foo() { this.x = 123; diff --git a/Libraries/LibJS/Tests/invalid-lhs-in-assignment.js b/Libraries/LibJS/Tests/invalid-lhs-in-assignment.js index 323ed9bb66..d7f65af2c0 100644 --- a/Libraries/LibJS/Tests/invalid-lhs-in-assignment.js +++ b/Libraries/LibJS/Tests/invalid-lhs-in-assignment.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { try { Math.abs(-20) = 40; diff --git a/Libraries/LibJS/Tests/let-scoping.js b/Libraries/LibJS/Tests/let-scoping.js index 8bdeb9f04b..a47c2bb202 100644 --- a/Libraries/LibJS/Tests/let-scoping.js +++ b/Libraries/LibJS/Tests/let-scoping.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { let i = 1; diff --git a/Libraries/LibJS/Tests/logical-expressions-basic.js b/Libraries/LibJS/Tests/logical-expressions-basic.js index de7ff65fd7..b02eb6fcdd 100644 --- a/Libraries/LibJS/Tests/logical-expressions-basic.js +++ b/Libraries/LibJS/Tests/logical-expressions-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert((true && true) === true); assert((false && false) === false); diff --git a/Libraries/LibJS/Tests/logical-expressions-short-circuit.js b/Libraries/LibJS/Tests/logical-expressions-short-circuit.js index a666255ac7..77edd59b80 100644 --- a/Libraries/LibJS/Tests/logical-expressions-short-circuit.js +++ b/Libraries/LibJS/Tests/logical-expressions-short-circuit.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { let foo = 1; false && (foo = 2); diff --git a/Libraries/LibJS/Tests/modulo-basic.js b/Libraries/LibJS/Tests/modulo-basic.js index e5b74d60e2..c8e9a22fb0 100644 --- a/Libraries/LibJS/Tests/modulo-basic.js +++ b/Libraries/LibJS/Tests/modulo-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(10 % 3 === 1); assert(10.5 % 2.5 === 0.5); diff --git a/Libraries/LibJS/Tests/numeric-literals-basic.js b/Libraries/LibJS/Tests/numeric-literals-basic.js index 3cf308d2ce..0b1f6249d6 100644 --- a/Libraries/LibJS/Tests/numeric-literals-basic.js +++ b/Libraries/LibJS/Tests/numeric-literals-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(0xff === 255); assert(0XFF === 255); diff --git a/Libraries/LibJS/Tests/object-basic.js b/Libraries/LibJS/Tests/object-basic.js index 1334ee6e1b..2320304fc0 100644 --- a/Libraries/LibJS/Tests/object-basic.js +++ b/Libraries/LibJS/Tests/object-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o = { 1: 23, foo: "bar", "hello": "friends" }; assert(o[1] === 23); diff --git a/Libraries/LibJS/Tests/parser-unary-associativity.js b/Libraries/LibJS/Tests/parser-unary-associativity.js index 1bc9b05f8e..6ed427110a 100644 --- a/Libraries/LibJS/Tests/parser-unary-associativity.js +++ b/Libraries/LibJS/Tests/parser-unary-associativity.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var o = {}; o.a = 1; diff --git a/Libraries/LibJS/Tests/run-tests b/Libraries/LibJS/Tests/run-tests index 346039fef1..7cc52252cc 100755 --- a/Libraries/LibJS/Tests/run-tests +++ b/Libraries/LibJS/Tests/run-tests @@ -13,6 +13,7 @@ pass_count=0 fail_count=0 count=0 +GLOBIGNORE=test-common.js for f in *.js; do result=`$js_program -t $f` if [ "$result" = "PASS" ]; then diff --git a/Libraries/LibJS/Tests/switch-break.js b/Libraries/LibJS/Tests/switch-break.js index 2b57f02723..0fe5fe1aab 100644 --- a/Libraries/LibJS/Tests/switch-break.js +++ b/Libraries/LibJS/Tests/switch-break.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var i = 0; var three; diff --git a/Libraries/LibJS/Tests/ternary-basic.js b/Libraries/LibJS/Tests/ternary-basic.js index 72aad18369..6eb62bda3d 100644 --- a/Libraries/LibJS/Tests/ternary-basic.js +++ b/Libraries/LibJS/Tests/ternary-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var x = 1; diff --git a/Libraries/LibJS/Tests/test-common.js b/Libraries/LibJS/Tests/test-common.js new file mode 100644 index 0000000000..b466a3f010 --- /dev/null +++ b/Libraries/LibJS/Tests/test-common.js @@ -0,0 +1,16 @@ + +function AssertionError(message) { + var instance = new Error(message); + instance.name = 'AssertionError'; + Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); + return instance; +} + +function assert(value) { + if (!value) + throw new AssertionError("The assertion failed!"); +} + +function assertNotReached() { + throw new AssertionError("assertNotReached() was reached!"); +} diff --git a/Libraries/LibJS/Tests/throw-basic.js b/Libraries/LibJS/Tests/throw-basic.js index 3b5106ec43..2c8190480e 100644 --- a/Libraries/LibJS/Tests/throw-basic.js +++ b/Libraries/LibJS/Tests/throw-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { throw 1; assertNotReached(); diff --git a/Libraries/LibJS/Tests/to-number-basic.js b/Libraries/LibJS/Tests/to-number-basic.js index cf41bb8b3c..e0d07a51fe 100644 --- a/Libraries/LibJS/Tests/to-number-basic.js +++ b/Libraries/LibJS/Tests/to-number-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(+false === 0); assert(-false === 0); diff --git a/Libraries/LibJS/Tests/typeof-basic.js b/Libraries/LibJS/Tests/typeof-basic.js index ee0d67eaa3..a1ba3dd5f7 100644 --- a/Libraries/LibJS/Tests/typeof-basic.js +++ b/Libraries/LibJS/Tests/typeof-basic.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { assert(typeof "foo" === "string"); assert(!(typeof "foo" !== "string")); diff --git a/Libraries/LibJS/Tests/var-multiple-declarator.js b/Libraries/LibJS/Tests/var-multiple-declarator.js index 49c76e276b..e4cac238c5 100644 --- a/Libraries/LibJS/Tests/var-multiple-declarator.js +++ b/Libraries/LibJS/Tests/var-multiple-declarator.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { var a = 1, b = 2, c = a + b; assert(a === 1); diff --git a/Libraries/LibJS/Tests/var-scoping.js b/Libraries/LibJS/Tests/var-scoping.js index 65ef361c97..4e88a9de0b 100644 --- a/Libraries/LibJS/Tests/var-scoping.js +++ b/Libraries/LibJS/Tests/var-scoping.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { function foo() { i = 3; diff --git a/Libraries/LibJS/Tests/variable-declaration.js b/Libraries/LibJS/Tests/variable-declaration.js index 461a46ecd2..b1231925db 100644 --- a/Libraries/LibJS/Tests/variable-declaration.js +++ b/Libraries/LibJS/Tests/variable-declaration.js @@ -1,3 +1,5 @@ +load("test-common.js"); + try { const constantValue = 1; diff --git a/Libraries/LibJS/Tests/variable-undefined.js b/Libraries/LibJS/Tests/variable-undefined.js index 1ad67efb41..604ace3ced 100644 --- a/Libraries/LibJS/Tests/variable-undefined.js +++ b/Libraries/LibJS/Tests/variable-undefined.js @@ -1,3 +1,5 @@ +load("test-common.js"); + function foo(a) { return a; } diff --git a/Userland/js.cpp b/Userland/js.cpp index a31b932792..bb09165b17 100644 --- a/Userland/js.cpp +++ b/Userland/js.cpp @@ -372,28 +372,9 @@ void repl(JS::Interpreter& interpreter) } } -JS::Value assert_impl(JS::Interpreter& interpreter) -{ - if (!interpreter.argument_count()) - return interpreter.throw_exception("No arguments specified"); - - auto assertion_value = interpreter.argument(0).to_boolean(); - if (!assertion_value) - return interpreter.throw_exception("AssertionError", "The assertion failed!"); - - return JS::Value(assertion_value); -} - -JS::Value assert_not_reached(JS::Interpreter& interpreter) -{ - return interpreter.throw_exception("AssertionError", "assertNotReached() was reached!"); -} - void enable_test_mode(JS::Interpreter& interpreter) { interpreter.global_object().put_native_function("load", ReplObject::load_file); - interpreter.global_object().put_native_function("assert", assert_impl); - interpreter.global_object().put_native_function("assertNotReached", assert_not_reached); } int main(int argc, char** argv)