mirror of
https://github.com/tc39/test262.git
synced 2025-07-27 07:54:41 +02:00
rework: remove *PropertyAttributes fns
- this change hits all files that use dataPropertyAttributesAreCorrect or acccessorPropertyAttributesAreCorrect Major changes: - remove include of runTestCase.js, dataPropertyAttributesAreCorrect.js and acccessorPropertyAttributesAreCorrect.js - add include of propertyHelper.js - remove function testCase() and call to function runTestCase() - instead of collecting test state into booleans, which are eventually returned from runTestCase, test conditions and throw errors immediately - use negative: to check error types instead of using `instanceof` in a catch() block Selected commit logs follow: manual conversion of accessorPropertyAttributesAreCorrect() test - remove runTestCase - remove wrapping testCase function - unindent - remove includes of runTestCase & accessor... - add include of propertyHelper.js - unpack final two args 'true, false' to explicit inline tests of isEnumerable and isConfigurable - unpack setter test into inline logic - unpack getter test into inline logic used script to replace includes: frontmatter with propertyHelper.js ; manually added back references to fnGlobalObject() where needed additional helper functions add helper functions for get and writable duplicate runTestCase so can remove runTestCase.js from includes of all tests in batch use keyboard macros to simplify repetitive conversions remove auto-save file accidentaly committed minor changes, manually remove runTestCase from remaining files lint etc. fixes remove now-obsolete harness files make strict/nonstrict variants tests where behavior is different in strict/nonstrict need two variants - strict mode throws on assign to read-only element (no setter fn) - strict mode separates named arguments from arguments[] fix indentation cleanup minor issues reviewing 15.2.3.7-9 tests, found some minor issues - indentation/spacing - duplicate test (eg, direct test of value and dataProp...) - remove needless try/finally - use assert.. helpers in place of if(is.. - rename some assertions to 'e' rename assertX to verifyX new helper fn sameValue test "set" as well as get reverse order of checks restore test of desc2 restore test of length restore test of ownProperty incorporate suggestions re order of ops, Object.prototype add test of sameValue helper restore return value in getter restore second defineProperty call restore check of explicit "false" restore explicit test of TypeError set noStrict flag on arguments changes rename catch var to "e" b4ad0e6 remove dataPropertyAttributesAreCorrect from tests 0d83ff2 remove accessorPropertyAttributesAreCorrect from tests bb926f3 remove {data,accessor}Property... fns from harness fix writable check on array.length call $ERROR if expected exception not thrown fix Epected => Expected typo use assert._isSamevalue
This commit is contained in:
parent
5318ee7b1f
commit
49abae4f5e
@ -1,74 +0,0 @@
|
|||||||
//-----------------------------------------------------------------------------
|
|
||||||
//Verify all attributes specified accessor property of given object:
|
|
||||||
//get, set, enumerable, configurable
|
|
||||||
//If all attribute values are expected, return true, otherwise, return false
|
|
||||||
function accessorPropertyAttributesAreCorrect(obj,
|
|
||||||
name,
|
|
||||||
get,
|
|
||||||
set,
|
|
||||||
setVerifyHelpProp,
|
|
||||||
enumerable,
|
|
||||||
configurable) {
|
|
||||||
var attributesCorrect = true;
|
|
||||||
|
|
||||||
if (get !== undefined) {
|
|
||||||
if (obj[name] !== get()) {
|
|
||||||
if (typeof obj[name] === "number" &&
|
|
||||||
isNaN(obj[name]) &&
|
|
||||||
typeof get() === "number" &&
|
|
||||||
isNaN(get())) {
|
|
||||||
// keep empty
|
|
||||||
} else {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (obj[name] !== undefined) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
var desc = Object.getOwnPropertyDescriptor(obj, name);
|
|
||||||
if (typeof desc.set === "undefined") {
|
|
||||||
if (typeof set !== "undefined") {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
obj[name] = "toBeSetValue";
|
|
||||||
if (obj[setVerifyHelpProp] !== "toBeSetValue") {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (se) {
|
|
||||||
throw se;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var enumerated = false;
|
|
||||||
for (var prop in obj) {
|
|
||||||
if (obj.hasOwnProperty(prop) && prop === name) {
|
|
||||||
enumerated = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enumerated !== enumerable) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var deleted = false;
|
|
||||||
try {
|
|
||||||
delete obj[name];
|
|
||||||
} catch (de) {
|
|
||||||
throw de;
|
|
||||||
}
|
|
||||||
if (!obj.hasOwnProperty(name)) {
|
|
||||||
deleted = true;
|
|
||||||
}
|
|
||||||
if (deleted !== configurable) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return attributesCorrect;
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
//-----------------------------------------------------------------------------
|
|
||||||
//Verify all attributes specified data property of given object:
|
|
||||||
//value, writable, enumerable, configurable
|
|
||||||
//If all attribute values are expected, return true, otherwise, return false
|
|
||||||
function dataPropertyAttributesAreCorrect(obj,
|
|
||||||
name,
|
|
||||||
value,
|
|
||||||
writable,
|
|
||||||
enumerable,
|
|
||||||
configurable) {
|
|
||||||
var attributesCorrect = true;
|
|
||||||
|
|
||||||
if (obj[name] !== value) {
|
|
||||||
if (typeof obj[name] === "number" &&
|
|
||||||
isNaN(obj[name]) &&
|
|
||||||
typeof value === "number" &&
|
|
||||||
isNaN(value)) {
|
|
||||||
// keep empty
|
|
||||||
} else {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
if (obj[name] === "oldValue") {
|
|
||||||
obj[name] = "newValue";
|
|
||||||
} else {
|
|
||||||
obj[name] = "OldValue";
|
|
||||||
}
|
|
||||||
} catch (we) {
|
|
||||||
}
|
|
||||||
|
|
||||||
var overwrited = false;
|
|
||||||
if (obj[name] !== value) {
|
|
||||||
if (typeof obj[name] === "number" &&
|
|
||||||
isNaN(obj[name]) &&
|
|
||||||
typeof value === "number" &&
|
|
||||||
isNaN(value)) {
|
|
||||||
// keep empty
|
|
||||||
} else {
|
|
||||||
overwrited = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (overwrited !== writable) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
var enumerated = false;
|
|
||||||
for (var prop in obj) {
|
|
||||||
if (obj.hasOwnProperty(prop) && prop === name) {
|
|
||||||
enumerated = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enumerated !== enumerable) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var deleted = false;
|
|
||||||
|
|
||||||
try {
|
|
||||||
delete obj[name];
|
|
||||||
} catch (de) {
|
|
||||||
}
|
|
||||||
if (!obj.hasOwnProperty(name)) {
|
|
||||||
deleted = true;
|
|
||||||
}
|
|
||||||
if (deleted !== configurable) {
|
|
||||||
attributesCorrect = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return attributesCorrect;
|
|
||||||
}
|
|
91
harness/propertyHelper.js
Normal file
91
harness/propertyHelper.js
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
|
||||||
|
function isConfigurable(obj, name) {
|
||||||
|
try {
|
||||||
|
delete obj[name];
|
||||||
|
} catch (e) {
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !Object.prototype.hasOwnProperty.call(obj, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isEnumerable(obj, name) {
|
||||||
|
for (var prop in obj) {
|
||||||
|
if (Object.prototype.hasOwnProperty.call(obj, prop) &&
|
||||||
|
assert._isSameValue(prop, name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isEqualTo(obj, name, expectedValue) {
|
||||||
|
var actualValue = obj[name];
|
||||||
|
|
||||||
|
return assert._isSameValue(actualValue, expectedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
function isWritable(obj, name, verifyProp, value) {
|
||||||
|
var newValue = value || "unlikelyValue";
|
||||||
|
|
||||||
|
try {
|
||||||
|
obj[name] = newValue;
|
||||||
|
} catch (e) {
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((verifyProp && isEqualTo(obj, verifyProp, newValue)) ||
|
||||||
|
isEqualTo(obj, name, newValue)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyEqualTo(obj, name, value) {
|
||||||
|
if (!isEqualTo(obj, name, value)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] to equal " + value +
|
||||||
|
", actually " + obj[name]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyWritable(obj, name, verifyProp, value) {
|
||||||
|
if (!isWritable(obj, name, verifyProp, value)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] to be writable, but was not.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyNotWritable(obj, name, verifyProp, value) {
|
||||||
|
if (isWritable(obj, name, verifyProp)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] NOT to be writable, but was.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyEnumerable(obj, name) {
|
||||||
|
if (!isEnumerable(obj, name)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] to be enumerable, but was not.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyNotEnumerable(obj, name) {
|
||||||
|
if (isEnumerable(obj, name)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] NOT to be enumerable, but was.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyConfigurable(obj, name) {
|
||||||
|
if (!isConfigurable(obj, name)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] to be configurable, but was not.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function verifyNotConfigurable(obj, name) {
|
||||||
|
if (isConfigurable(obj, name)) {
|
||||||
|
$ERROR("Expected obj[" + String(name) + "] NOT to be configurable, but was.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -9,23 +9,18 @@ es5id: 15.2.3.5-4-315
|
|||||||
description: >
|
description: >
|
||||||
Object.create - all properties in 'Properties' are enumerable
|
Object.create - all properties in 'Properties' are enumerable
|
||||||
(data property and accessor property) (15.2.3.7 step 7)
|
(data property and accessor property) (15.2.3.7 step 7)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var newObj = {};
|
||||||
|
function getFunc() {
|
||||||
var newObj = {};
|
|
||||||
function getFunc() {
|
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function setFunc(value) {
|
function setFunc(value) {
|
||||||
newObj.setVerifyHelpProp = value;
|
newObj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
newObj = Object.create({}, {
|
newObj = Object.create({}, {
|
||||||
foo1: {
|
foo1: {
|
||||||
value: 200,
|
value: 200,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
@ -38,8 +33,20 @@ function testcase() {
|
|||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(newObj, "foo1", 200, true, true, true) &&
|
|
||||||
accessorPropertyAttributesAreCorrect(newObj, "foo2", getFunc, setFunc, "setVerifyHelpProp", true, true);
|
verifyEqualTo(newObj, "foo1", 200);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(newObj, "foo1");
|
||||||
|
|
||||||
|
verifyEnumerable(newObj, "foo1");
|
||||||
|
|
||||||
|
verifyConfigurable(newObj, "foo1");
|
||||||
|
|
||||||
|
verifyEqualTo(newObj, "foo2", getFunc());
|
||||||
|
|
||||||
|
verifyWritable(newObj, "foo2", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(newObj, "foo2");
|
||||||
|
|
||||||
|
verifyConfigurable(newObj, "foo2");
|
||||||
|
@ -9,28 +9,29 @@ es5id: 15.2.3.7-6-a-100
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is data property, several attributes
|
Object.defineProperties - 'P' is data property, several attributes
|
||||||
values of P and properties are different (8.12.9 step 12)
|
values of P and properties are different (8.12.9 step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
value: 100,
|
value: 100,
|
||||||
writable: true,
|
writable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
value: 200,
|
value: 200,
|
||||||
writable: false,
|
writable: false,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(obj, "foo", 200, false, false, false);
|
verifyEqualTo(obj, "foo", 200);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(obj, "foo");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "foo");
|
||||||
|
@ -10,38 +10,39 @@ description: >
|
|||||||
Object.defineProperties - 'P' is accessor property, both
|
Object.defineProperties - 'P' is accessor property, both
|
||||||
properties.[[Get]] and P.[[Get]] are two different values (8.12.9
|
properties.[[Get]] and P.[[Get]] are two different values (8.12.9
|
||||||
step 12)
|
step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function get_func2() {
|
function get_func2() {
|
||||||
return 20;
|
return 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
get: get_func2
|
get: get_func2
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(obj, "foo", get_func2());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -9,34 +9,33 @@ es5id: 15.2.3.7-6-a-102
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
||||||
present and properties.[[Get]] is undefined (8.12.9 step 12)
|
present and properties.[[Get]] is undefined (8.12.9 step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
get: undefined
|
get: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", undefined, set_func, "setVerifyHelpProp", true, true);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-103
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
||||||
undefined and properties.[[Get]] is normal value (8.12.9 step 12)
|
undefined and properties.[[Get]] is normal value (8.12.9 step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: undefined,
|
get: undefined,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
get: get_func
|
get: get_func
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(obj, "foo", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -10,39 +10,40 @@ description: >
|
|||||||
Object.defineProperties - 'P' is accessor property, both
|
Object.defineProperties - 'P' is accessor property, both
|
||||||
properties.[[Set]] and P.[[Set]] are two different values (8.12.9
|
properties.[[Set]] and P.[[Set]] are two different values (8.12.9
|
||||||
step 12)
|
step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_func() {
|
function set_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function set_func2(value) {
|
function set_func2(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
set: set_func2
|
set: set_func2
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func2, "setVerifyHelpProp", true, true);
|
verifyEqualTo(obj, "foo", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-106
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is accessor property, P.[[Set]] is
|
Object.defineProperties - 'P' is accessor property, P.[[Set]] is
|
||||||
undefined and properties.[[Set]] is normal value (8.12.9 step 12)
|
undefined and properties.[[Set]] is normal value (8.12.9 step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: undefined,
|
set: undefined,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
set: set_func
|
set: set_func
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(obj, "foo", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-107
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is accessor property, P.enumerable
|
Object.defineProperties - 'P' is accessor property, P.enumerable
|
||||||
and properties.enumerable are different values (8.12.9 step 12)
|
and properties.enumerable are different values (8.12.9 step 12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", false, true);
|
verifyEqualTo(obj, "foo", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo");
|
||||||
|
@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-108
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is accessor property, P.configurable
|
Object.defineProperties - 'P' is accessor property, P.configurable
|
||||||
is true and properties.configurable is false
|
is true and properties.configurable is false
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, false);
|
verifyEqualTo(obj, "foo", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "foo");
|
||||||
|
@ -10,40 +10,41 @@ description: >
|
|||||||
Object.defineProperties - 'P' is accessor property, several
|
Object.defineProperties - 'P' is accessor property, several
|
||||||
attributes values of P and properties are different (8.12.9 step
|
attributes values of P and properties are different (8.12.9 step
|
||||||
12)
|
12)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func1() {
|
function get_func1() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func1() { }
|
function set_func1() { }
|
||||||
|
|
||||||
Object.defineProperty(obj, "foo", {
|
Object.defineProperty(obj, "foo", {
|
||||||
get: get_func1,
|
get: get_func1,
|
||||||
set: set_func1,
|
set: set_func1,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
function get_func2() {
|
function get_func2() {
|
||||||
return 20;
|
return 20;
|
||||||
}
|
}
|
||||||
function set_func2(value) {
|
function set_func2(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
foo: {
|
foo: {
|
||||||
get: get_func2,
|
get: get_func2,
|
||||||
set: set_func2,
|
set: set_func2,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func2, "setVerifyHelpProp", false, false);
|
verifyEqualTo(obj, "foo", get_func2());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "foo");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "foo");
|
||||||
|
@ -9,24 +9,20 @@ es5id: 15.2.3.7-6-a-110
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - all own properties (data property and
|
Object.defineProperties - all own properties (data property and
|
||||||
accessor property)
|
accessor property)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = {};
|
var obj = {};
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
obj.setVerifyHelpProp = value;
|
obj.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
var properties = {
|
var properties = {
|
||||||
foo1: {
|
foo1: {
|
||||||
value: 200,
|
value: 200,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
@ -39,10 +35,21 @@ function testcase() {
|
|||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.defineProperties(obj, properties);
|
Object.defineProperties(obj, properties);
|
||||||
return dataPropertyAttributesAreCorrect(obj, "foo1", 200, true, true, true) && accessorPropertyAttributesAreCorrect(obj, "foo2", get_func, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(obj, "foo1", 200);
|
||||||
|
|
||||||
|
verifyWritable(obj, "foo1");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo1");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo1");
|
||||||
|
verifyEqualTo(obj, "foo2", get_func());
|
||||||
|
|
||||||
|
verifyWritable(obj, "foo2", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(obj, "foo2");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "foo2");
|
||||||
|
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
|
||||||
|
30
test/built-ins/Object/defineProperties/15.2.3.7-6-a-114-b.js
Normal file
30
test/built-ins/Object/defineProperties/15.2.3.7-6-a-114-b.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
||||||
|
// Ecma International makes this code available under the terms and conditions set
|
||||||
|
// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
|
||||||
|
// "Use Terms"). Any redistribution of this code must retain the above
|
||||||
|
// copyright and this notice and otherwise comply with the Use Terms.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
es5id: 15.2.3.7-6-a-114-b
|
||||||
|
description: >
|
||||||
|
Object.defineProperties - 'O' is an Array, 'P' is the length
|
||||||
|
property of 'O', the [[Value]] field of 'desc' is absent, test
|
||||||
|
every field in 'desc' is absent (15.4.5.1 step 3.a.i)
|
||||||
|
includes: [propertyHelper.js]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
var arr = [];
|
||||||
|
|
||||||
|
Object.defineProperties(arr, { length: {} });
|
||||||
|
|
||||||
|
if (arr.length !== 0) {
|
||||||
|
$ERROR("Expected arr.length to be 0, actually " + arr.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
verifyEqualTo(arr, "length", 0);
|
||||||
|
|
||||||
|
verifyWritable(arr, "length", "length", 1);
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "length");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "length");
|
@ -10,32 +10,23 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is the length
|
Object.defineProperties - 'O' is an Array, 'P' is the length
|
||||||
property of 'O', the [[Value]] field of 'desc' is absent, test
|
property of 'O', the [[Value]] field of 'desc' is absent, test
|
||||||
every field in 'desc' is absent (15.4.5.1 step 3.a.i)
|
every field in 'desc' is absent (15.4.5.1 step 3.a.i)
|
||||||
includes: [runTestCase.js]
|
includes: [propertyHelper.js]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperties(arr, { length: {} });
|
Object.defineProperties(arr, { length: {} });
|
||||||
|
|
||||||
var verifyValue = false;
|
if (arr.length !== 0) {
|
||||||
verifyValue = (arr.length === 0);
|
$ERROR("Expected arr.length to be 0, actually " + arr.length);
|
||||||
|
}
|
||||||
|
|
||||||
var verifyWritable = false;
|
arr.length = 2;
|
||||||
arr.length = 2;
|
|
||||||
verifyWritable = (arr.length === 2);
|
|
||||||
|
|
||||||
var verifyEnumerable = false;
|
verifyEqualTo(arr, "length", 2);
|
||||||
for (var p in arr) {
|
|
||||||
if (p === "length") {
|
|
||||||
verifyEnumerable = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var verifyConfigurable = false;
|
verifyWritable(arr, "length", "length", 5);
|
||||||
delete arr.length;
|
|
||||||
verifyConfigurable = arr.hasOwnProperty("length");
|
|
||||||
|
|
||||||
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
|
verifyNotEnumerable(arr, "length");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotConfigurable(arr, "length");
|
||||||
|
@ -10,29 +10,35 @@ description: >
|
|||||||
Object.defineProperties - 'O' is a Function object which
|
Object.defineProperties - 'O' is a Function object which
|
||||||
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
||||||
step 1 )
|
step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var fun = function () { };
|
||||||
var fun = function () { };
|
|
||||||
|
|
||||||
Object.defineProperty(fun, "prop", {
|
Object.defineProperty(fun, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(fun, {
|
Object.defineProperties(fun, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(fun, "prop", 11, false, false, false);
|
verifyEqualTo(fun, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(fun, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(fun, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(fun, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,23 +11,20 @@ description: >
|
|||||||
property of 'O', the [[Value]] field of 'desc' is absent, test
|
property of 'O', the [[Value]] field of 'desc' is absent, test
|
||||||
updating the [[Writable]] attribute of the length property from
|
updating the [[Writable]] attribute of the length property from
|
||||||
true to false (15.4.5.1 step 3.a.i)
|
true to false (15.4.5.1 step 3.a.i)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
|
|
||||||
var arr = [];
|
Object.defineProperties(arr, {
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperties(arr, {
|
|
||||||
length: { writable: false }
|
length: { writable: false }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
verifyEqualTo(arr, "length", 0);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "length");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "length");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "length");
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "length", 0, false, false, false);
|
|
||||||
} catch (e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -9,29 +9,35 @@ es5id: 15.2.3.7-6-a-13
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is an Array object which implements
|
Object.defineProperties - 'O' is an Array object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "prop", {
|
Object.defineProperty(arr, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(arr, "prop", 11, false, false, false);
|
verifyEqualTo(arr, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -9,29 +9,35 @@ es5id: 15.2.3.7-6-a-14
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is a String object which implements
|
Object.defineProperties - 'O' is a String object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var str = new String();
|
||||||
var str = new String();
|
|
||||||
|
|
||||||
Object.defineProperty(str, "prop", {
|
Object.defineProperty(str, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(str, {
|
Object.defineProperties(str, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(str, "prop", 11, false, false, false);
|
verifyEqualTo(str, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(str, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(str, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(str, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-15
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is a Boolean object which implements
|
Object.defineProperties - 'O' is a Boolean object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = new Boolean(false);
|
var obj = new Boolean(false);
|
||||||
|
|
||||||
Object.defineProperty(obj, "prop", {
|
Object.defineProperty(obj, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
verifyEqualTo(obj, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-16
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is a Number object which implements
|
Object.defineProperties - 'O' is a Number object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = new Number(-9);
|
var obj = new Number(-9);
|
||||||
|
|
||||||
Object.defineProperty(obj, "prop", {
|
Object.defineProperty(obj, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
verifyEqualTo(obj, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-18
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is a Date object which implements
|
Object.defineProperties - 'O' is a Date object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = new Date();
|
var obj = new Date();
|
||||||
|
|
||||||
Object.defineProperty(obj, "prop", {
|
Object.defineProperty(obj, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
verifyEqualTo(obj, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-19
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is a RegExp object which implements
|
Object.defineProperties - 'O' is a RegExp object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = new RegExp();
|
var obj = new RegExp();
|
||||||
|
|
||||||
Object.defineProperty(obj, "prop", {
|
Object.defineProperty(obj, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
verifyEqualTo(obj, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,20 +11,21 @@ description: >
|
|||||||
named property, 'P' property doesn't exist in 'O', test 'P' is
|
named property, 'P' property doesn't exist in 'O', test 'P' is
|
||||||
defined as data property when 'desc' is generic descriptor
|
defined as data property when 'desc' is generic descriptor
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -9,30 +9,31 @@ es5id: 15.2.3.7-6-a-2
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'P' is inherited data property (8.12.9
|
Object.defineProperties - 'P' is inherited data property (8.12.9
|
||||||
step 1 )
|
step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var proto = {};
|
||||||
var proto = {};
|
Object.defineProperty(proto, "prop", {
|
||||||
Object.defineProperty(proto, "prop", {
|
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
var Con = function () { };
|
var Con = function () { };
|
||||||
Con.prototype = proto;
|
Con.prototype = proto;
|
||||||
|
|
||||||
var obj = new Con();
|
var obj = new Con();
|
||||||
|
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(obj, "prop", 12, false, false, true);
|
verifyEqualTo(obj, "prop", 12);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyConfigurable(obj, "prop");
|
||||||
|
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -10,23 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
named property, 'desc' is data descriptor, test updating all
|
named property, 'desc' is data descriptor, test updating all
|
||||||
attribute values of 'P' (15.4.5.1 step 4.c)
|
attribute values of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [1]; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||||
var arr = [1]; // default value of attributes: writable: true, configurable: true, enumerable: true
|
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: 1001,
|
value: 1001,
|
||||||
writable: false,
|
writable: false,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
verifyEqualTo(arr, "0", 1001);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 1001, false, false, false);
|
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -12,16 +12,13 @@ description: >
|
|||||||
[[Configurable]] of 'P' property in 'Attributes' is set as false
|
[[Configurable]] of 'P' property in 'Attributes' is set as false
|
||||||
value if [[Configurable]] is absent in accessor descriptor 'desc'
|
value if [[Configurable]] is absent in accessor descriptor 'desc'
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes: [runTestCase.js]
|
includes: [propertyHelper.js]
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
arr.verifySetter = 100;
|
||||||
var beforeDeleted = false;
|
|
||||||
var afterDeleted = false;
|
|
||||||
arr.verifySetter = 100;
|
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
set: function (value) {
|
set: function (value) {
|
||||||
arr.verifySetter = value;
|
arr.verifySetter = value;
|
||||||
@ -31,14 +28,18 @@ function testcase() {
|
|||||||
},
|
},
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeDeleted = arr.hasOwnProperty("0");
|
if (!Object.prototype.hasOwnProperty.call(arr, "0")) {
|
||||||
delete arr[0];
|
$ERROR("Expected hasOwnProperty to return true.");
|
||||||
afterDeleted = arr.hasOwnProperty("0");
|
}
|
||||||
|
|
||||||
arr[0] = 101;
|
arr[0] = 101;
|
||||||
|
|
||||||
return beforeDeleted && afterDeleted && arr[0] === 101 && arr.verifySetter === 101;
|
verifyEqualTo(arr, 0, 101);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
if (arr.verifySetter !== 101) {
|
||||||
|
$ERROR('Expected arr.verifySetter === 101, actually ' + arr.verifySetter);
|
||||||
|
}
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, 0);
|
||||||
|
@ -10,15 +10,12 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
named property, 'desc' is accessor descriptor, test updating all
|
named property, 'desc' is accessor descriptor, test updating all
|
||||||
attribute values of 'P' (15.4.5.1 step 4.c)
|
attribute values of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 11;
|
return 11;
|
||||||
@ -27,23 +24,27 @@ function testcase() {
|
|||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var setFun = function (value) {
|
var setFun = function (value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
};
|
};
|
||||||
var getFun = function () {
|
var getFun = function () {
|
||||||
return 14;
|
return 14;
|
||||||
};
|
};
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: getFun,
|
get: getFun,
|
||||||
set: setFun,
|
set: setFun,
|
||||||
configurable: false,
|
configurable: false,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", getFun, setFun, "setVerifyHelpProp", false, false);
|
verifyEqualTo(arr, "0", getFun());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -10,23 +10,21 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
named property, 'P' makes no change if every field in 'desc' is
|
named property, 'P' makes no change if every field in 'desc' is
|
||||||
absent (name is data property) (15.4.5.1 step 4.c)
|
absent (name is data property) (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
arr[0] = 101; // default value of attributes: writable: true, configurable: true, enumerable: true
|
arr[0] = 101; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||||
|
|
||||||
try {
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {}
|
"0": {}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 101, true, true, true);
|
verifyEqualTo(arr, "0", 101);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -10,35 +10,33 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
named property, 'P' makes no change if every field in 'desc' is
|
named property, 'P' makes no change if every field in 'desc' is
|
||||||
absent (name is accessor property) (15.4.5.1 step 4.c)
|
absent (name is accessor property) (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 11;
|
return 11;
|
||||||
}
|
}
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {}
|
"0": {}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(arr, "0", get_func());
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,25 +11,26 @@ description: >
|
|||||||
named property, 'P' makes no change if the value of every field in
|
named property, 'P' makes no change if the value of every field in
|
||||||
'desc' is the same value as the corresponding field in 'P'(desc is
|
'desc' is the same value as the corresponding field in 'P'(desc is
|
||||||
data property) (15.4.5.1 step 4.c)
|
data property) (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
arr[0] = 100; // default value of attributes: writable: true, configurable: true, enumerable: true
|
arr[0] = 100; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: 100,
|
value: 100,
|
||||||
writable: true,
|
writable: true,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 100, true, true, true);
|
verifyEqualTo(arr, "0", 100);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,35 +11,36 @@ description: >
|
|||||||
named property, 'P' makes no change if the value of every field in
|
named property, 'P' makes no change if the value of every field in
|
||||||
'desc' is the same value as the corresponding field in 'P'(desc is
|
'desc' is the same value as the corresponding field in 'P'(desc is
|
||||||
accessor property) (15.4.5.1 step 4.c)
|
accessor property) (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
var get_func = function () {
|
||||||
var get_func = function () {
|
|
||||||
return "100";
|
return "100";
|
||||||
};
|
};
|
||||||
var set_func = function (value) {
|
var set_func = function (value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
};
|
};
|
||||||
|
|
||||||
var descObj = {
|
var descObj = {
|
||||||
get: get_func,
|
get: get_func,
|
||||||
set: set_func,
|
set: set_func,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
};
|
};
|
||||||
|
|
||||||
var properties = {
|
var properties = {
|
||||||
"0": descObj
|
"0": descObj
|
||||||
};
|
};
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", descObj);
|
Object.defineProperty(arr, "0", descObj);
|
||||||
|
|
||||||
Object.defineProperties(arr, properties);
|
Object.defineProperties(arr, properties);
|
||||||
|
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true);
|
verifyEqualTo(arr, "0", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-21
|
|||||||
description: >
|
description: >
|
||||||
Object.defineProperties - 'O' is an Error object which implements
|
Object.defineProperties - 'O' is an Error object which implements
|
||||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var obj = new Error();
|
var obj = new Error();
|
||||||
|
|
||||||
Object.defineProperty(obj, "prop", {
|
Object.defineProperty(obj, "prop", {
|
||||||
value: 11,
|
value: 11,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(obj, {
|
Object.defineProperties(obj, {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12,
|
value: 12,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
verifyEqualTo(obj, "prop", 11);
|
||||||
|
|
||||||
|
verifyNotWritable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotEnumerable(obj, "prop");
|
||||||
|
|
||||||
|
verifyNotConfigurable(obj, "prop");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,23 +11,24 @@ description: >
|
|||||||
index property, both the [[Value]] field of 'desc' and the
|
index property, both the [[Value]] field of 'desc' and the
|
||||||
[[Value]] attribute value of 'name' are undefined (15.4.5.1 step
|
[[Value]] attribute value of 'name' are undefined (15.4.5.1 step
|
||||||
4.c)
|
4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: undefined
|
value: undefined
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: undefined
|
value: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -10,23 +10,24 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||||
index property, both the [[Value]] field of 'desc' and the
|
index property, both the [[Value]] field of 'desc' and the
|
||||||
[[Value]] attribute value of 'name' are null (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'name' are null (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: null
|
value: null
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: null
|
value: null
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", null, false, false, false);
|
verifyEqualTo(arr, "0", null);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -10,24 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||||
index property, both the [[Value]] field of 'desc' and the
|
index property, both the [[Value]] field of 'desc' and the
|
||||||
[[Value]] attribute value of 'name' are NaN (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'name' are NaN (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: NaN
|
value: NaN
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: NaN
|
value: NaN
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", NaN, false, false, false);
|
verifyEqualTo(arr, "0", NaN);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -10,27 +10,33 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||||
index property, the [[Value]] field of 'desc' is +0, and the
|
index property, the [[Value]] field of 'desc' is +0, and the
|
||||||
[[Value]] attribute value of 'name' is -0 (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'name' is -0 (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: -0
|
value: -0
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: +0
|
value: +0
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", -0, false, false, false);
|
verifyEqualTo(arr, "0", -0);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -10,27 +10,33 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||||
index property, the [[Value]] field of 'desc' is -0, and the
|
index property, the [[Value]] field of 'desc' is -0, and the
|
||||||
[[Value]] attribute value of 'name' is +0 (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'name' is +0 (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: +0
|
value: +0
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
value: -0
|
value: -0
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", +0, false, false, false);
|
verifyEqualTo(arr, "0", +0);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,27 +11,24 @@ description: >
|
|||||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'name' are two numbers with same vaule
|
attribute value of 'name' are two numbers with same vaule
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: 101
|
value: 101
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: 101
|
value: 101
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 101, false, false, false);
|
verifyEqualTo(arr, "0", 101);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -11,27 +11,25 @@ description: >
|
|||||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'name' are two strings which have same length
|
attribute value of 'name' are two strings which have same length
|
||||||
and same characters in corresponding positions (15.4.5.1 step 4.c)
|
and same characters in corresponding positions (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: "abcd"
|
value: "abcd"
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: "abcd"
|
value: "abcd"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", "abcd", false, false, false);
|
verifyEqualTo(arr, "0", "abcd");
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,27 +11,25 @@ description: >
|
|||||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'name' are two booleans with same value
|
attribute value of 'name' are two booleans with same value
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: true
|
value: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", true, false, false, false);
|
verifyEqualTo(arr, "0", true);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,29 +11,28 @@ description: >
|
|||||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'name' are two objects which refer to the same
|
attribute value of 'name' are two objects which refer to the same
|
||||||
object (15.4.5.1 step 4.c)
|
object (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
var obj1 = { length: 10 };
|
var obj1 = { length: 10 };
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
value: obj1
|
value: obj1
|
||||||
});
|
});
|
||||||
|
|
||||||
var properties = {
|
var properties = {
|
||||||
"0": {
|
"0": {
|
||||||
value: obj1
|
value: obj1
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
try {
|
|
||||||
Object.defineProperties(arr, properties);
|
Object.defineProperties(arr, properties);
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", obj1, false, false, false);
|
verifyEqualTo(arr, "0", obj1);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -10,27 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Writable]] true, and
|
property that already exists on 'O' with [[Writable]] true, and
|
||||||
the [[Writable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
the [[Writable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
writable: true
|
writable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
writable: true
|
writable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, false, false);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -10,28 +10,26 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Writable]] true, and
|
property that already exists on 'O' with [[Writable]] true, and
|
||||||
the [[Writable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
the [[Writable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
writable: true,
|
writable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
writable: false
|
writable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,27 +11,26 @@ description: >
|
|||||||
property, the [[Get]] field of 'desc' and the [[Get]] attribute
|
property, the [[Get]] field of 'desc' and the [[Get]] attribute
|
||||||
value of 'P' are two objects which refer to the same object
|
value of 'P' are two objects which refer to the same object
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function get_func() {
|
function get_func() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: get_func
|
get: get_func
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: get_func
|
get: get_func
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, undefined, undefined, false, false);
|
verifyEqualTo(arr, "0", get_func());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -11,31 +11,26 @@ description: >
|
|||||||
property, the [[Set]] field of 'desc' and the [[Set]] attribute
|
property, the [[Set]] field of 'desc' and the [[Set]] attribute
|
||||||
value of 'P' are two objects which refer to the same object
|
value of 'P' are two objects which refer to the same object
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function set_func(value) {
|
function set_func(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: set_func
|
set: set_func
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
set: set_func
|
set: set_func
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_func, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotConfigurable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -10,27 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Enumerable]] true, the
|
property that already exists on 'O' with [[Enumerable]] true, the
|
||||||
[[Enumerable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
[[Enumerable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
enumerable: true
|
enumerable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -10,28 +10,26 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Enumerable]] true, the
|
property that already exists on 'O' with [[Enumerable]] true, the
|
||||||
[[Enumerable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
[[Enumerable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -10,27 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Configurable]] true,
|
property that already exists on 'O' with [[Configurable]] true,
|
||||||
the [[Configurable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
the [[Configurable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -10,27 +10,25 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||||
property that already exists on 'O' with [[Configurable]] true,
|
property that already exists on 'O' with [[Configurable]] true,
|
||||||
the [[Configurable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
the [[Configurable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (e) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,30 +11,35 @@ description: >
|
|||||||
property, TypeError is thrown if the [[Configurable]] attribute
|
property, TypeError is thrown if the [[Configurable]] attribute
|
||||||
value of 'P' is false and the [[Configurable]] field of 'desc' is
|
value of 'P' is false and the [[Configurable]] field of 'desc' is
|
||||||
true (15.4.5.1 step 4.c)
|
true (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: 3,
|
value: 3,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: 13,
|
value: 13,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
} catch (e) {
|
||||||
} catch (ex) {
|
verifyEqualTo(arr, "1", 3);
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -12,32 +12,38 @@ description: >
|
|||||||
value of 'P' is false, and [[Enumerable]] of 'desc' is present and
|
value of 'P' is false, and [[Enumerable]] of 'desc' is present and
|
||||||
its value is different from the [[Enumerable]] attribute value of
|
its value is different from the [[Enumerable]] attribute value of
|
||||||
'P' (15.4.5.1 step 4.c)
|
'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: 3,
|
value: 3,
|
||||||
configurable: false,
|
configurable: false,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: 13,
|
value: 13,
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
verifyEqualTo(arr, "1", 3);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,35 +11,39 @@ description: >
|
|||||||
property, TypeError is thrown if 'P' is accessor property, and
|
property, TypeError is thrown if 'P' is accessor property, and
|
||||||
'desc' is data descriptor, and the [[Configurable]] attribute
|
'desc' is data descriptor, and the [[Configurable]] attribute
|
||||||
value of 'P' is false (15.4.5.1 step 4.c)
|
value of 'P' is false (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
configurable: false
|
configurable: false
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: 13
|
value: 13
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
|
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,29 +11,35 @@ description: >
|
|||||||
property, TypeError is thrown if 'P' is data property, and'desc'
|
property, TypeError is thrown if 'P' is data property, and'desc'
|
||||||
is accessor descriptor, and the [[Configurable]] attribute value
|
is accessor descriptor, and the [[Configurable]] attribute value
|
||||||
of 'P' is false (15.4.5.1 step 4.c)
|
of 'P' is false (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: 3,
|
value: 3,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
set: function () { }
|
set: function () { }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
verifyEqualTo(arr, "1", 3);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -12,25 +12,24 @@ description: >
|
|||||||
and the [[Configurable]] attribute value of 'P' is true, test 'P'
|
and the [[Configurable]] attribute value of 'P' is true, test 'P'
|
||||||
is converted from data property to accessor property (15.4.5.1
|
is converted from data property to accessor property (15.4.5.1
|
||||||
step 4.c)
|
step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||||
arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
|
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", true, true);
|
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "1");
|
||||||
|
@ -12,28 +12,29 @@ description: >
|
|||||||
and the [[Configurable]] attribute value of 'P' is true, test 'P'
|
and the [[Configurable]] attribute value of 'P' is true, test 'P'
|
||||||
is converted from accessor property to data property (15.4.5.1
|
is converted from accessor property to data property (15.4.5.1
|
||||||
step 4.c)
|
step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 3;
|
return 3;
|
||||||
},
|
},
|
||||||
configurable: true
|
configurable: true
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: 12
|
value: 12
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, true);
|
verifyEqualTo(arr, "1", 12);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "1");
|
||||||
|
@ -13,30 +13,36 @@ description: >
|
|||||||
TypeError is thrown if the [[Writable]] attribute value of 'P' is
|
TypeError is thrown if the [[Writable]] attribute value of 'P' is
|
||||||
false and the [[Writable]] field of 'desc' is true. (15.4.5.1
|
false and the [[Writable]] field of 'desc' is true. (15.4.5.1
|
||||||
step 4.c)
|
step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
configurable: false,
|
configurable: false,
|
||||||
writable: false
|
writable: false
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
writable: true
|
writable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", undefined, false, false, false);
|
verifyEqualTo(arr, "1", undefined);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -14,31 +14,37 @@ description: >
|
|||||||
false, and the type of the [[Value]] field of 'desc' is different
|
false, and the type of the [[Value]] field of 'desc' is different
|
||||||
from the type of the [[Value]] attribute value of 'P' (15.4.5.1
|
from the type of the [[Value]] attribute value of 'P' (15.4.5.1
|
||||||
step 4.c)
|
step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: 3,
|
value: 3,
|
||||||
configurable: false,
|
configurable: false,
|
||||||
writable: false
|
writable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: "abc"
|
value: "abc"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
verifyEqualTo(arr, "1", 3);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -12,27 +12,33 @@ description: >
|
|||||||
data property with [[Configurable]], [[Writable]] false, 'desc'
|
data property with [[Configurable]], [[Writable]] false, 'desc'
|
||||||
is data descriptor, [[Value]] field of 'desc' is +0, and the
|
is data descriptor, [[Value]] field of 'desc' is +0, and the
|
||||||
[[Value]] attribute value of 'P' is -0 (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'P' is -0 (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: +0
|
value: +0
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: -0
|
value: -0
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", +0, false, false, false);
|
verifyEqualTo(arr, "1", +0);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -12,28 +12,34 @@ description: >
|
|||||||
data property with [[Configurable]], [[Writable]] false, 'desc'
|
data property with [[Configurable]], [[Writable]] false, 'desc'
|
||||||
is data descriptor, [[Value]] field of 'desc' is -0, and the
|
is data descriptor, [[Value]] field of 'desc' is -0, and the
|
||||||
[[Value]] attribute value of 'P' is +0 (15.4.5.1 step 4.c)
|
[[Value]] attribute value of 'P' is +0 (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: -0
|
value: -0
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: +0
|
value: +0
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", -0, false, false, false);
|
verifyEqualTo(arr, "1", -0);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,27 +13,34 @@ description: >
|
|||||||
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'P' are two numbers with different vaule
|
attribute value of 'P' are two numbers with different vaule
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
var arr = [];
|
||||||
|
|
||||||
|
Object.defineProperty(arr, "1", {
|
||||||
value: 12
|
value: 12
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: 36
|
value: 36
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, false);
|
verifyEqualTo(arr, "1", 12);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,27 +13,33 @@ description: >
|
|||||||
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'P' are two strings with different values
|
attribute value of 'P' are two strings with different values
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: "abcd"
|
value: "abcd"
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: "efgh"
|
value: "efgh"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", "abcd", false, false, false);
|
verifyEqualTo(arr, "1", "abcd");
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,28 +13,34 @@ description: >
|
|||||||
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'P' are two booleans with different values
|
attribute value of 'P' are two booleans with different values
|
||||||
(15.4.5.1 step 4.c)
|
(15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: true
|
value: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: false
|
value: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", true, false, false, false);
|
verifyEqualTo(arr, "1", true);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -10,30 +10,29 @@ description: >
|
|||||||
Object.defineProperties - 'O' is the global object which
|
Object.defineProperties - 'O' is the global object which
|
||||||
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
||||||
step 1 )
|
step 1 )
|
||||||
includes:
|
includes: [propertyHelper.js, fnGlobalObject.js]
|
||||||
- runTestCase.js
|
|
||||||
- fnGlobalObject.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
try {
|
Object.defineProperty(fnGlobalObject(), "prop", {
|
||||||
Object.defineProperty(fnGlobalObject(), "prop", {
|
value: 11,
|
||||||
value: 11,
|
writable: true,
|
||||||
writable: true,
|
enumerable: true,
|
||||||
enumerable: true,
|
configurable: true
|
||||||
configurable: true
|
});
|
||||||
});
|
|
||||||
|
|
||||||
Object.defineProperties(fnGlobalObject(), {
|
Object.defineProperties(fnGlobalObject(), {
|
||||||
prop: {
|
prop: {
|
||||||
value: 12
|
value: 12
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(fnGlobalObject(), "prop", 12, true, true, true);
|
|
||||||
} finally {
|
verifyEqualTo(fnGlobalObject(), "prop", 12);
|
||||||
delete fnGlobalObject().prop;
|
|
||||||
}
|
verifyWritable(fnGlobalObject(), "prop");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyEnumerable(fnGlobalObject(), "prop");
|
||||||
|
|
||||||
|
verifyConfigurable(fnGlobalObject(), "prop");
|
||||||
|
|
||||||
|
delete fnGlobalObject().prop;
|
||||||
|
@ -13,30 +13,36 @@ description: >
|
|||||||
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
||||||
attribute value of 'P' are two objects which refer to the
|
attribute value of 'P' are two objects which refer to the
|
||||||
different objects (15.4.5.1 step 4.c)
|
different objects (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
var obj1 = { value: 12 };
|
||||||
var obj1 = { value: 12 };
|
var obj2 = { value: 36 };
|
||||||
var obj2 = { value: 36 };
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
value: obj1
|
value: obj1
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
value: obj2
|
value: obj2
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", obj1, false, false, false);
|
verifyEqualTo(arr, "1", obj1);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -14,31 +14,35 @@ description: >
|
|||||||
[[Set]] field of 'desc' and the [[Set]] attribute value of 'P' are
|
[[Set]] field of 'desc' and the [[Set]] attribute value of 'P' are
|
||||||
two objects which refer to the different objects (15.4.5.1 step
|
two objects which refer to the different objects (15.4.5.1 step
|
||||||
4.c)
|
4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
set: function () { }
|
set: function () { }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,31 +13,35 @@ description: >
|
|||||||
descriptor, the [[Set]] field of 'desc' is present, and the
|
descriptor, the [[Set]] field of 'desc' is present, and the
|
||||||
[[Set]] field of 'desc' is an object and the [[Set]] attribute
|
[[Set]] field of 'desc' is an object and the [[Set]] attribute
|
||||||
value of 'P' is undefined (15.4.5.1 step 4.c)
|
value of 'P' is undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
set: undefined
|
set: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,24 +13,21 @@ description: >
|
|||||||
accessor descriptor, the [[Set]] field of 'desc' is present, and
|
accessor descriptor, the [[Set]] field of 'desc' is present, and
|
||||||
the [[Set]] field of 'desc' and the [[Set]] attribute value of 'P'
|
the [[Set]] field of 'desc' and the [[Set]] attribute value of 'P'
|
||||||
are undefined (15.4.5.1 step 4.c)
|
are undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
set: undefined
|
set: undefined
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
set: undefined
|
set: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false);
|
verifyNotEnumerable(arr, "1");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotConfigurable(arr, "1");
|
||||||
|
@ -14,22 +14,19 @@ description: >
|
|||||||
[[Get]] field of 'desc' and the [[Get]] attribute value of 'P' are
|
[[Get]] field of 'desc' and the [[Get]] attribute value of 'P' are
|
||||||
two objects which refer to the different objects (15.4.5.1 step
|
two objects which refer to the different objects (15.4.5.1 step
|
||||||
4.c)
|
4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 36;
|
return 36;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
get: get_fun
|
get: get_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
get: function () {
|
get: function () {
|
||||||
@ -38,9 +35,16 @@ function testcase() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false);
|
verifyEqualTo(arr, "1", get_fun());
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -13,30 +13,34 @@ description: >
|
|||||||
descriptor, the [[Get]] field of 'desc' is present, and the
|
descriptor, the [[Get]] field of 'desc' is present, and the
|
||||||
[[Get]] field of 'desc' is an object and the [[Get]] attribute
|
[[Get]] field of 'desc' is an object and the [[Get]] attribute
|
||||||
value of 'P' is undefined (15.4.5.1 step 4.c)
|
value of 'P' is undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 36;
|
return 36;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
get: get_fun
|
get: get_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"1": {
|
"1": {
|
||||||
get: undefined
|
get: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false);
|
verifyEqualTo(arr, "1", get_fun());
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -14,28 +14,22 @@ description: >
|
|||||||
field of 'desc' is present, and the [[Get]] field of 'desc' and
|
field of 'desc' is present, and the [[Get]] field of 'desc' and
|
||||||
the [[Get]] attribute value of 'P' are undefined (15.4.5.1 step
|
the [[Get]] attribute value of 'P' are undefined (15.4.5.1 step
|
||||||
4.c)
|
4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
Object.defineProperty(arr, "1", {
|
Object.defineProperty(arr, "1", {
|
||||||
get: undefined
|
get: undefined
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"1": {
|
"1": {
|
||||||
get: undefined
|
get: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "1");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "1");
|
||||||
|
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false);
|
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -11,24 +11,22 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test updating the [[Value]] attribute
|
'desc' is data descriptor, test updating the [[Value]] attribute
|
||||||
value of 'P' (15.4.5.1 step 4.c)
|
value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [12];
|
var arr = [12];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: 36
|
value: 36
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 36, true, true, true);
|
verifyEqualTo(arr, "0", 36);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,24 +11,21 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test setting the [[Value]] attribute
|
'desc' is data descriptor, test setting the [[Value]] attribute
|
||||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [12];
|
var arr = [12];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: undefined
|
value: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, true, true);
|
verifyEqualTo(arr, "0", undefined);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,24 +11,22 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test setting the [[Value]] attribute
|
'desc' is data descriptor, test setting the [[Value]] attribute
|
||||||
value of 'P' from undefined to normal value (15.4.5.1 step 4.c)
|
value of 'P' from undefined to normal value (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [undefined];
|
var arr = [undefined];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: 12
|
value: 12
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, true);
|
verifyEqualTo(arr, "0", 12);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,24 +11,22 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test updating the [[Writable]]
|
'desc' is data descriptor, test updating the [[Writable]]
|
||||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [100];
|
var arr = [100];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
writable: false
|
writable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 100, false, true, true);
|
verifyEqualTo(arr, "0", 100);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,24 +11,21 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test updating the [[Enumerable]]
|
'desc' is data descriptor, test updating the [[Enumerable]]
|
||||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [12];
|
var arr = [12];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, false, true);
|
verifyEqualTo(arr, "0", 12);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,24 +11,22 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test updating the [[Configurable]]
|
'desc' is data descriptor, test updating the [[Configurable]]
|
||||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [12];
|
var arr = [12];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, false);
|
verifyEqualTo(arr, "0", 12);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,26 +11,24 @@ description: >
|
|||||||
named property that already exists on 'O' is data property and
|
named property that already exists on 'O' is data property and
|
||||||
'desc' is data descriptor, test updating multiple attribute values
|
'desc' is data descriptor, test updating multiple attribute values
|
||||||
of 'P' (15.4.5.1 step 4.c)
|
of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [12];
|
var arr = [12];
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
value: 36,
|
value: 36,
|
||||||
writable: false,
|
writable: false,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "0", 36, false, true, false);
|
verifyEqualTo(arr, "0", 36);
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotWritable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
|
||||||
|
@ -11,31 +11,30 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
||||||
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 36;
|
return 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 12;
|
return 12;
|
||||||
},
|
},
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: get_fun
|
get: get_fun
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true);
|
verifyEqualTo(arr, "0", get_fun());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,27 +11,24 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test setting the [[Get]] attribute
|
'desc' is accessor descriptor, test setting the [[Get]] attribute
|
||||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 12;
|
return 12;
|
||||||
},
|
},
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: undefined
|
get: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true);
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,29 +11,28 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
||||||
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 36;
|
return 36;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: undefined,
|
get: undefined,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
get: get_fun
|
get: get_fun
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true);
|
verifyEqualTo(arr, "0", get_fun());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotEnumerable(arr, "0");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,33 +11,29 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
||||||
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: function () { },
|
set: function () { },
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyConfigurable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -11,25 +11,22 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test setting the [[Set]] attribute
|
'desc' is accessor descriptor, test setting the [[Set]] attribute
|
||||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: function () { },
|
set: function () { },
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"0": {
|
"0": {
|
||||||
set: undefined
|
set: undefined
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true);
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyConfigurable(arr, "0");
|
||||||
|
@ -11,32 +11,27 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
||||||
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: undefined,
|
set: undefined,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyConfigurable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -11,33 +11,28 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Enumerable]]
|
'desc' is accessor descriptor, test updating the [[Enumerable]]
|
||||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyConfigurable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -11,32 +11,28 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating the [[Configurable]]
|
'desc' is accessor descriptor, test updating the [[Configurable]]
|
||||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyNotEnumerable(arr, "0");
|
||||||
}
|
|
||||||
}
|
verifyNotConfigurable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
@ -11,41 +11,38 @@ description: >
|
|||||||
named property that already exists on 'O' is accessor property and
|
named property that already exists on 'O' is accessor property and
|
||||||
'desc' is accessor descriptor, test updating multiple attribute
|
'desc' is accessor descriptor, test updating multiple attribute
|
||||||
values of 'P' (15.4.5.1 step 4.c)
|
values of 'P' (15.4.5.1 step 4.c)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 36;
|
return 36;
|
||||||
}
|
}
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "0", {
|
Object.defineProperty(arr, "0", {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 12;
|
return 12;
|
||||||
},
|
},
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
Object.defineProperties(arr, {
|
||||||
Object.defineProperties(arr, {
|
|
||||||
"0": {
|
"0": {
|
||||||
get: get_fun,
|
get: get_fun,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, set_fun, "setVerifyHelpProp", false, false);
|
verifyEqualTo(arr, "0", get_fun());
|
||||||
} catch (ex) {
|
|
||||||
return false;
|
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||||
}
|
|
||||||
}
|
verifyNotEnumerable(arr, "0");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyNotConfigurable(arr, "0");
|
||||||
|
@ -11,23 +11,29 @@ description: >
|
|||||||
that won't exist on 'O', and 'desc' is data descriptor, test 'P'
|
that won't exist on 'O', and 'desc' is data descriptor, test 'P'
|
||||||
is defined in 'O' with all correct attribute values (15.4.5.1 step
|
is defined in 'O' with all correct attribute values (15.4.5.1 step
|
||||||
5)
|
5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
value: 12,
|
value: 12,
|
||||||
writable: true,
|
writable: true,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "property", 12, true, true, true) && arr.length === 0;
|
verifyEqualTo(arr, "property", 12);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (arr.length !== 0) {
|
||||||
|
$ERROR('Expected arr.length === 0, actually ' + arr.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -10,31 +10,36 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is generic
|
Object.defineProperties - 'O' is an Array, 'P' is generic
|
||||||
property, and 'desc' is accessor descriptor, test 'P' is defined
|
property, and 'desc' is accessor descriptor, test 'P' is defined
|
||||||
in 'O' with all correct attribute values (15.4.5.1 step 5)
|
in 'O' with all correct attribute values (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 12;
|
return 12;
|
||||||
}
|
}
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
get: get_fun,
|
get: get_fun,
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "setVerifyHelpProp", true, true) &&
|
verifyEqualTo(arr, "property", get_fun());
|
||||||
arr.length === 0;
|
|
||||||
}
|
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||||
runTestCase(testcase);
|
|
||||||
|
verifyEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (arr.length !== 0) {
|
||||||
|
$ERROR('Expected arr.length === 0, actually ' + arr.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -10,34 +10,35 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is generic own
|
Object.defineProperties - 'O' is an Array, 'P' is generic own
|
||||||
accessor property of 'O', and 'desc' is accessor descriptor, test
|
accessor property of 'O', and 'desc' is accessor descriptor, test
|
||||||
updating multiple attribute values of 'P' (15.4.5.1 step 5)
|
updating multiple attribute values of 'P' (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
function get_fun() {
|
||||||
function get_fun() {
|
|
||||||
return 12;
|
return 12;
|
||||||
}
|
}
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.verifySetFun = value;
|
arr.verifySetFun = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
get: function () {
|
get: function () {
|
||||||
return 36;
|
return 36;
|
||||||
},
|
},
|
||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true
|
configurable: true
|
||||||
});
|
});
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
get: get_fun,
|
get: get_fun,
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, true);
|
verifyEqualTo(arr, "property", get_fun());
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyWritable(arr, "property", "verifySetFun");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyConfigurable(arr, "property");
|
||||||
|
@ -10,23 +10,29 @@ description: >
|
|||||||
Object.defineProperties - 'O' is an Array, 'P' is generic own data
|
Object.defineProperties - 'O' is an Array, 'P' is generic own data
|
||||||
property of 'O', and 'desc' is data descriptor, test updating
|
property of 'O', and 'desc' is data descriptor, test updating
|
||||||
multiple attribute values of 'P' (15.4.5.1 step 5)
|
multiple attribute values of 'P' (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true
|
arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||||
|
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
writable: false,
|
writable: false,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
configurable: false
|
configurable: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false) && arr.length === 0;
|
verifyEqualTo(arr, "property", 12);
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
verifyNotWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (arr.length !== 0) {
|
||||||
|
$ERROR('Expected arr.length === 0, actually ' + arr.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -11,28 +11,34 @@ description: >
|
|||||||
property of 'O', test TypeError is thrown when updating the
|
property of 'O', test TypeError is thrown when updating the
|
||||||
[[Value]] attribute value of 'P' which is defined as unwritable
|
[[Value]] attribute value of 'P' which is defined as unwritable
|
||||||
and non-configurable (15.4.5.1 step 5)
|
and non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
value: 12
|
value: 12
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
value: 36
|
value: 36
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
verifyEqualTo(arr, "property", 12);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,28 +11,34 @@ description: >
|
|||||||
property of 'O', test TypeError is thrown when updating the
|
property of 'O', test TypeError is thrown when updating the
|
||||||
[[Writable]] attribute value of 'P' which is defined as
|
[[Writable]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
writable: false
|
writable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
writable: true
|
writable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", undefined, false, false, false);
|
verifyEqualTo(arr, "property", undefined);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,29 +11,35 @@ description: >
|
|||||||
property of 'O', test TypeError is thrown when updating the
|
property of 'O', test TypeError is thrown when updating the
|
||||||
[[Enumerable]] attribute value of 'P' which is defined as
|
[[Enumerable]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
value: 12,
|
value: 12,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
verifyEqualTo(arr, "property", 12);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,28 +11,34 @@ description: >
|
|||||||
property of 'O', test TypeError is thrown when updating the
|
property of 'O', test TypeError is thrown when updating the
|
||||||
[[Configurable]] attribute value of 'P' which is defined as
|
[[Configurable]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- dataPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
value: 12
|
value: 12
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
verifyEqualTo(arr, "property", 12);
|
||||||
|
|
||||||
|
verifyNotWritable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,26 +11,23 @@ description: >
|
|||||||
accessor property of 'O', test TypeError is thrown when updating
|
accessor property of 'O', test TypeError is thrown when updating
|
||||||
the [[Get]] attribute value of 'P' which is defined as
|
the [[Get]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
var arr = [];
|
||||||
var arr = [];
|
|
||||||
|
|
||||||
function get_fun() {
|
function get_fun() {
|
||||||
return 37;
|
return 37;
|
||||||
}
|
}
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.verifySetFun = value;
|
arr.verifySetFun = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
get: get_fun,
|
get: get_fun,
|
||||||
set: set_fun
|
set: set_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
get: function () {
|
get: function () {
|
||||||
@ -38,10 +35,18 @@ function testcase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) &&
|
verifyEqualTo(arr, "property", get_fun());
|
||||||
accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, false);
|
|
||||||
|
verifyWritable(arr, "property", "verifySetFun");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,31 +11,34 @@ description: >
|
|||||||
accessor property of 'O', test TypeError is thrown when updating
|
accessor property of 'O', test TypeError is thrown when updating
|
||||||
the [[Set]] attribute value of 'P' which is defined as
|
the [[Set]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
set: set_fun
|
set: set_fun
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
set: function () { }
|
set: function () { }
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
} catch (e) {
|
||||||
} catch (ex) {
|
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false);
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,32 +11,36 @@ description: >
|
|||||||
accessor property of 'O', test TypeError is thrown when updating
|
accessor property of 'O', test TypeError is thrown when updating
|
||||||
the [[Enumerable]] attribute value of 'P' which is defined as
|
the [[Enumerable]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
enumerable: false
|
enumerable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
enumerable: true
|
enumerable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
@ -11,32 +11,36 @@ description: >
|
|||||||
accessor property of 'O', test TypeError is thrown when updating
|
accessor property of 'O', test TypeError is thrown when updating
|
||||||
the [[Configurable]] attribute value of 'P' which is defined as
|
the [[Configurable]] attribute value of 'P' which is defined as
|
||||||
non-configurable (15.4.5.1 step 5)
|
non-configurable (15.4.5.1 step 5)
|
||||||
includes:
|
includes: [propertyHelper.js]
|
||||||
- runTestCase.js
|
|
||||||
- accessorPropertyAttributesAreCorrect.js
|
|
||||||
---*/
|
---*/
|
||||||
|
|
||||||
function testcase() {
|
|
||||||
|
|
||||||
var arr = [];
|
var arr = [];
|
||||||
|
|
||||||
function set_fun(value) {
|
function set_fun(value) {
|
||||||
arr.setVerifyHelpProp = value;
|
arr.setVerifyHelpProp = value;
|
||||||
}
|
}
|
||||||
Object.defineProperty(arr, "property", {
|
Object.defineProperty(arr, "property", {
|
||||||
set: set_fun,
|
set: set_fun,
|
||||||
configurable: false
|
configurable: false
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Object.defineProperties(arr, {
|
Object.defineProperties(arr, {
|
||||||
"property": {
|
"property": {
|
||||||
configurable: true
|
configurable: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
$ERROR("Expected an exception.");
|
||||||
} catch (ex) {
|
} catch (e) {
|
||||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false);
|
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||||
|
|
||||||
|
verifyNotEnumerable(arr, "property");
|
||||||
|
|
||||||
|
verifyNotConfigurable(arr, "property");
|
||||||
|
|
||||||
|
if (!(e instanceof TypeError)) {
|
||||||
|
$ERROR("Expected TypeError, got " + e);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
runTestCase(testcase);
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user