From 954d1809f831de8fd5749b6baab4cc03b6d9a5ab Mon Sep 17 00:00:00 2001 From: "Ioanna M. Dimitriou H" Date: Wed, 9 Oct 2024 21:23:13 +0200 Subject: [PATCH] Boilerplate tests for rawJSON and isRawJSON from the proposal json-parse-with-source --- test/built-ins/JSON/isRawJSON/builtin.js | 48 +++++++++++++++++++ test/built-ins/JSON/isRawJSON/length.js | 25 ++++++++++ test/built-ins/JSON/isRawJSON/name.js | 29 +++++++++++ .../JSON/isRawJSON/not-a-constructor.js | 28 +++++++++++ test/built-ins/JSON/isRawJSON/prop-desc.js | 31 ++++++++++++ test/built-ins/JSON/rawJSON/builtin.js | 37 ++++++++++++++ test/built-ins/JSON/rawJSON/length.js | 25 ++++++++++ test/built-ins/JSON/rawJSON/name.js | 29 +++++++++++ .../JSON/rawJSON/not-a-constructor.js | 28 +++++++++++ test/built-ins/JSON/rawJSON/prop-desc.js | 31 ++++++++++++ 10 files changed, 311 insertions(+) create mode 100644 test/built-ins/JSON/isRawJSON/builtin.js create mode 100644 test/built-ins/JSON/isRawJSON/length.js create mode 100644 test/built-ins/JSON/isRawJSON/name.js create mode 100644 test/built-ins/JSON/isRawJSON/not-a-constructor.js create mode 100644 test/built-ins/JSON/isRawJSON/prop-desc.js create mode 100644 test/built-ins/JSON/rawJSON/builtin.js create mode 100644 test/built-ins/JSON/rawJSON/length.js create mode 100644 test/built-ins/JSON/rawJSON/name.js create mode 100644 test/built-ins/JSON/rawJSON/not-a-constructor.js create mode 100644 test/built-ins/JSON/rawJSON/prop-desc.js diff --git a/test/built-ins/JSON/isRawJSON/builtin.js b/test/built-ins/JSON/isRawJSON/builtin.js new file mode 100644 index 0000000000..391908309c --- /dev/null +++ b/test/built-ins/JSON/isRawJSON/builtin.js @@ -0,0 +1,48 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.israwjson +description: > + JSON.isRawJSON meets the requirements for built-in objects +info: | + JSON.isRawJSON ( O ) + + 18 ECMAScript Standard Built-in Objects + ... + Unless specified otherwise, a built-in object that is callable as a function + is a built-in function object with the characteristics described in 10.3. + Unless specified otherwise, the [[Extensible]] internal slot of a built-in + object initially has the value true. Every built-in function object has a + [[Realm]] internal slot whose value is the Realm Record of the realm for + which the object was initially created. + ... + Unless otherwise specified every built-in function and every built-in + constructor has the Function prototype object, which is the initial value of + the expression Function.prototype (20.2.3), as the value of its [[Prototype]] + internal slot. + ... + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in the + description of a particular function. + +features: [json-parse-with-source] +---*/ + +assert(Object.isExtensible(JSON.isRawJSON), "JSON.isRawJSON is extensible"); +assert.sameValue( + typeof JSON.isRawJSON, + 'function', + 'The value of `typeof JSON.isRawJSON` is "function"' +); +assert.sameValue( + Object.getPrototypeOf(JSON.isRawJSON), + Function.prototype, + 'Object.getPrototypeOf(JSON.isRawJSON) must return the value of "Function.prototype"' +); + +assert.sameValue( + Object.getOwnPropertyDescriptor(JSON.isRawJSON, "prototype"), + undefined, + "JSON.isRawJSON has no own prototype property" +); diff --git a/test/built-ins/JSON/isRawJSON/length.js b/test/built-ins/JSON/isRawJSON/length.js new file mode 100644 index 0000000000..28487bc406 --- /dev/null +++ b/test/built-ins/JSON/isRawJSON/length.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.rawjson +description: > + JSON.isRawJSON.length value and descriptor. +info: | + JSON.isRawJSON ( text ) + + 18 ECMAScript Standard Built-in Objects + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ + +verifyProperty(JSON.isRawJSON, 'length', { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/JSON/isRawJSON/name.js b/test/built-ins/JSON/isRawJSON/name.js new file mode 100644 index 0000000000..ffc706739b --- /dev/null +++ b/test/built-ins/JSON/isRawJSON/name.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.israwjson +description: > + JSON.isRawJSON.name value and descriptor. +info: | + JSON.isRawJSON ( text ) + + 18 ECMAScript Standard Built-in Objects + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ + +assert.sameValue( + JSON.isRawJSON.name, 'isRawJSON', + 'The value of JSON.isRawJSON.name is "isRawJSON"' +); + +verifyProperty(JSON.isRawJSON, 'name', { + enumerable: false, + writable: false, + configurable: true +}); diff --git a/test/built-ins/JSON/isRawJSON/not-a-constructor.js b/test/built-ins/JSON/isRawJSON/not-a-constructor.js new file mode 100644 index 0000000000..bad6437198 --- /dev/null +++ b/test/built-ins/JSON/isRawJSON/not-a-constructor.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + JSON.isRawJSON does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [json-parse-with-source] +---*/ + +assert.sameValue(isConstructor(JSON.isRawJSON), false, 'isConstructor(JSON.isRawJSON) must return false'); + +assert.throws(TypeError, () => { + new JSON.isRawJSON(); +}); diff --git a/test/built-ins/JSON/isRawJSON/prop-desc.js b/test/built-ins/JSON/isRawJSON/prop-desc.js new file mode 100644 index 0000000000..542dd268fe --- /dev/null +++ b/test/built-ins/JSON/isRawJSON/prop-desc.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.israwjson +description: > + Property type and descriptor. +info: | + JSON.isRawJSON ( O ) + + 18 ECMAScript Standard Built-in Objects + ... + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ + +assert.sameValue( + typeof JSON.isRawJSON, + 'function', + 'The value of `typeof JSON.isRawJSON` is "function"' +); + +verifyProperty(JSON, 'isRawJSON', { + enumerable: false, + writable: true, + configurable: true +}); diff --git a/test/built-ins/JSON/rawJSON/builtin.js b/test/built-ins/JSON/rawJSON/builtin.js new file mode 100644 index 0000000000..58b4375790 --- /dev/null +++ b/test/built-ins/JSON/rawJSON/builtin.js @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.rawjson +description: > + JSON.rawJSON meets the requirements for built-in objects +info: | + Unless specified otherwise, a built-in object that is callable as a function + is a built-in function object with the characteristics described in 10.3. + Unless specified otherwise, the [[Extensible]] internal slot of a built-in + object initially has the value *true*. + + Unless otherwise specified every built-in function and every built-in + constructor has the Function prototype object, which is the initial value of + the expression Function.prototype (20.2.3), as the value of its [[Prototype]] + internal slot. + + Built-in functions that are not constructors do not have a "prototype" + property unless otherwise specified in the description of a particular + function. +features: [json-parse-with-source] +---*/ + +assert(Object.isExtensible(JSON.rawJSON), "JSON.rawJSON is extensible"); + +assert.sameValue( + Object.getPrototypeOf(JSON.rawJSON), + Function.prototype, + "Prototype of JSON.rawJSON is Function.prototype" +); + +assert.sameValue( + Object.getOwnPropertyDescriptor(JSON.rawJSON, "prototype"), + undefined, + "JSON.rawJSON has no own prototype property" +); diff --git a/test/built-ins/JSON/rawJSON/length.js b/test/built-ins/JSON/rawJSON/length.js new file mode 100644 index 0000000000..76ecdecec6 --- /dev/null +++ b/test/built-ins/JSON/rawJSON/length.js @@ -0,0 +1,25 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.rawjson +description: > + JSON.rawJSON.length value and descriptor. +info: | + JSON.rawJSON ( text ) + + 18 ECMAScript Standard Built-in Objects + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ + +verifyProperty(JSON.rawJSON, 'length', { + value: 1, + writable: false, + enumerable: false, + configurable: true +}); diff --git a/test/built-ins/JSON/rawJSON/name.js b/test/built-ins/JSON/rawJSON/name.js new file mode 100644 index 0000000000..969cbb350f --- /dev/null +++ b/test/built-ins/JSON/rawJSON/name.js @@ -0,0 +1,29 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.rawjson +description: > + JSON.rawJSON.name value and descriptor. +info: | + JSON.rawJSON ( text ) + + 18 ECMAScript Standard Built-in Objects + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ + +assert.sameValue( + JSON.rawJSON.name, 'rawJSON', + 'The value of JSON.rawJSON.name is "rawJSON"' +); + +verifyProperty(JSON.rawJSON, 'name', { + enumerable: false, + writable: false, + configurable: true +}); diff --git a/test/built-ins/JSON/rawJSON/not-a-constructor.js b/test/built-ins/JSON/rawJSON/not-a-constructor.js new file mode 100644 index 0000000000..74de33197a --- /dev/null +++ b/test/built-ins/JSON/rawJSON/not-a-constructor.js @@ -0,0 +1,28 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + JSON.rawJSON does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [json-parse-with-source] +---*/ + +assert.sameValue(isConstructor(JSON.rawJSON), false, 'isConstructor(JSON.rawJSON) must return false'); + +assert.throws(TypeError, () => { + new JSON.rawJSON(); +}); diff --git a/test/built-ins/JSON/rawJSON/prop-desc.js b/test/built-ins/JSON/rawJSON/prop-desc.js new file mode 100644 index 0000000000..0156aebb90 --- /dev/null +++ b/test/built-ins/JSON/rawJSON/prop-desc.js @@ -0,0 +1,31 @@ +// Copyright (C) 2024 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-json.rawjson +description: > + Property type and descriptor. +info: | + JSON.rawJSON ( text ) + + 18 ECMAScript Standard Built-in Objects + Every other data property described in clauses 19 through 28 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. + +includes: [propertyHelper.js] +features: [json-parse-with-source] +---*/ +assert.sameValue(typeof JSON.rawJSON, 'function'); + +assert.sameValue( + typeof JSON.rawJSON, + 'function', + 'The value of `typeof JSON.rawJSON` is "function"' +); + +verifyProperty(JSON, 'rawJSON', { + enumerable: false, + writable: true, + configurable: true +});