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 519bb54d8b6..122f1501a70 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 c6ce64554be..9dce8d4c292 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 97f748744b0..44cb316203b 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 afffee48ad2..3bd288f99ae 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 1a9f8593f11..c77bc04f393 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 de444128c30..31cb114a824 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 9a8846af4b2..843dbec5935 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 7cfba104958..21ba4df1909 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 5459242cd4b..72c5cc79304 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 e70dc7623c6..4ad6a3b3900 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 631f386ae36..94dbe1622b4 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 6a102f23956..44416882c99 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 b09e000a6e1..2e7984b4973 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 95f9d199161..49ef970fe88 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 bf09c0278e4..380f864ed49 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 a6503b9b324..3556770058c 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 e96272f9d60..7247bc9f13a 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 a7a54ee3fc5..8c352465fed 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 ddf78f28a9a..0338dded12d 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 991cb92aeee..48123543df0 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 88a785fc235..e4f1d7db1e0 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 1f4b232b6be..b832f277983 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 04f2fbd71b2..f3e20d3fb2e 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 30e7725896b..29eb153ea5e 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 231a49458d4..4f2e1cf5e6d 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 33164410f49..9bab3278220 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 0c402ddf932..9fe84c4bee2 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 0c2ed1e0ab6..583af24dfa6 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 9ed8ff89604..56a6ff6269a 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 2af3d7dbb89..e483243ae41 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 2b4a814a9f8..7b01e441028 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 35b8746ee6d..fbe26bd27b3 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 bd93e668900..50a591b1c9a 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 07a57e6507d..622fd8b1980 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 07b9ff73f4c..636fe2add73 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 ec2bf0c5370..79b257b1769 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 17b51711d62..188d9347e36 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 7d52bce470c..ce2e7a67f90 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 ee7e2308e7a..407b999d9ae 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 10a110840f8..ba167235255 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 1ff4705fc0a..f42f913fba7 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 d63e89beb25..fee37f9e78c 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 990dbf28011..cbb90108fc1 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 08ccc6a0da8..3e35fcb797b 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 9f9218fd6db..06f5921bf87 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 225394939fe..0a12f2ee522 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 0d794442d5e..549716bb659 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 2672b70f1b4..94b9c1f2b2f 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 994fed659d4..9e9fbd96b49 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 117093b61eb..b0488e955cf 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 4bc304babf7..a3b02282245 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 a654ec8b46f..18ea5377cd6 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 322d1c7a352..0b2b99d803b 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 fe7c5116815..2ed6d486f52 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 a1f6b589932..571f26e7298 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 ffb25c758b1..3be304ed1e6 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 2a68e1e7706..c1532dfa225 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 7298fab6721..bfd1064da79 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 d2db8fdaf50..56537de34c6 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 704a00349eb..09eb1ae0362 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 a0d59cdeb60..28d2cfa588e 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 5ca6d50791c..9472ec48081 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 b26804a3169..1bbf506bdc0 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 8e7c7c74f22..0684c46889a 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 c68c2b99722..747a574cb13 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 8c54819a2d9..6b808dad911 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 cd7870c952c..8d63265f495 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 7a3e69cc32e..05cfc2a66a5 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 48810a38e76..39c10b6649d 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 0bfa3de834d..4fb2a3248f0 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 0db8dbdc0a2..29d22e7e606 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 323ed9bb666..d7f65af2c0d 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 8bdeb9f04b2..a47c2bb202a 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 de7ff65fd70..b02eb6fcddb 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 a666255ac71..77edd59b80f 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 e5b74d60e28..c8e9a22fb00 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 3cf308d2ced..0b1f6249d61 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 1334ee6e1b5..2320304fc0e 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 1bc9b05f8e6..6ed427110a1 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 346039fef18..7cc52252cc2 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 2b57f027230..0fe5fe1aab6 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 72aad183695..6eb62bda3d8 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 00000000000..b466a3f0106 --- /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 3b5106ec439..2c8190480e7 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 cf41bb8b3c7..e0d07a51fe2 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 ee0d67eaa39..a1ba3dd5f75 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 49c76e276b2..e4cac238c50 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 65ef361c970..4e88a9de0b1 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 461a46ecd22..b1231925dbd 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 1ad67efb414..604ace3ced7 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 a31b9327928..bb09165b178 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)