mirror of
https://github.com/tc39/test262.git
synced 2025-04-08 19:35:28 +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,37 +9,44 @@ es5id: 15.2.3.5-4-315
|
||||
description: >
|
||||
Object.create - all properties in 'Properties' are enumerable
|
||||
(data property and accessor property) (15.2.3.7 step 7)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var newObj = {};
|
||||
function getFunc() {
|
||||
return 10;
|
||||
}
|
||||
function setFunc(value) {
|
||||
newObj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
var newObj = {};
|
||||
function getFunc() {
|
||||
return 10;
|
||||
}
|
||||
function setFunc(value) {
|
||||
newObj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
newObj = Object.create({}, {
|
||||
foo1: {
|
||||
value: 200,
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
configurable: true
|
||||
},
|
||||
foo2: {
|
||||
get: getFunc,
|
||||
set: setFunc,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(newObj, "foo1", 200, true, true, true) &&
|
||||
accessorPropertyAttributesAreCorrect(newObj, "foo2", getFunc, setFunc, "setVerifyHelpProp", true, true);
|
||||
newObj = Object.create({}, {
|
||||
foo1: {
|
||||
value: 200,
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
configurable: true
|
||||
},
|
||||
foo2: {
|
||||
get: getFunc,
|
||||
set: setFunc,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(newObj, "foo1", 200);
|
||||
|
||||
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: >
|
||||
Object.defineProperties - 'P' is data property, several attributes
|
||||
values of P and properties are different (8.12.9 step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
value: 100,
|
||||
writable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
value: 100,
|
||||
writable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: 200,
|
||||
writable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(obj, "foo", 200, false, false, false);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
value: 200,
|
||||
writable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", 200);
|
||||
|
||||
verifyNotWritable(obj, "foo");
|
||||
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
|
||||
verifyNotConfigurable(obj, "foo");
|
||||
|
@ -10,38 +10,39 @@ description: >
|
||||
Object.defineProperties - 'P' is accessor property, both
|
||||
properties.[[Get]] and P.[[Get]] are two different values (8.12.9
|
||||
step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
function get_func2() {
|
||||
return 20;
|
||||
}
|
||||
function get_func2() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func2
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func2
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func2());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -9,34 +9,33 @@ es5id: 15.2.3.7-6-a-102
|
||||
description: >
|
||||
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
||||
present and properties.[[Get]] is undefined (8.12.9 step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: undefined
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", undefined, set_func, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-103
|
||||
description: >
|
||||
Object.defineProperties - 'P' is accessor property, P.[[Get]] is
|
||||
undefined and properties.[[Get]] is normal value (8.12.9 step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: undefined,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: undefined,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -10,39 +10,40 @@ description: >
|
||||
Object.defineProperties - 'P' is accessor property, both
|
||||
properties.[[Set]] and P.[[Set]] are two different values (8.12.9
|
||||
step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
function set_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
function set_func2(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_func2(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
set: set_func2
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func2, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
set: set_func2
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-106
|
||||
description: >
|
||||
Object.defineProperties - 'P' is accessor property, P.[[Set]] is
|
||||
undefined and properties.[[Set]] is normal value (8.12.9 step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: undefined,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: undefined,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
set: set_func
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
set: set_func
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-107
|
||||
description: >
|
||||
Object.defineProperties - 'P' is accessor property, P.enumerable
|
||||
and properties.enumerable are different values (8.12.9 step 12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", false, true);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
enumerable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
|
||||
verifyConfigurable(obj, "foo");
|
||||
|
@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-108
|
||||
description: >
|
||||
Object.defineProperties - 'P' is accessor property, P.configurable
|
||||
is true and properties.configurable is false
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, false);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(obj, "foo");
|
||||
|
||||
verifyNotConfigurable(obj, "foo");
|
||||
|
@ -10,40 +10,41 @@ description: >
|
||||
Object.defineProperties - 'P' is accessor property, several
|
||||
attributes values of P and properties are different (8.12.9 step
|
||||
12)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func1() {
|
||||
return 10;
|
||||
}
|
||||
function set_func1() { }
|
||||
function get_func1() {
|
||||
return 10;
|
||||
}
|
||||
function set_func1() { }
|
||||
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func1,
|
||||
set: set_func1,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, "foo", {
|
||||
get: get_func1,
|
||||
set: set_func1,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
function get_func2() {
|
||||
return 20;
|
||||
}
|
||||
function set_func2(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func2() {
|
||||
return 20;
|
||||
}
|
||||
function set_func2(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func2,
|
||||
set: set_func2,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func2, "setVerifyHelpProp", false, false);
|
||||
Object.defineProperties(obj, {
|
||||
foo: {
|
||||
get: get_func2,
|
||||
set: set_func2,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(obj, "foo", get_func2());
|
||||
|
||||
verifyWritable(obj, "foo", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(obj, "foo");
|
||||
|
||||
verifyNotConfigurable(obj, "foo");
|
||||
|
@ -9,40 +9,47 @@ es5id: 15.2.3.7-6-a-110
|
||||
description: >
|
||||
Object.defineProperties - all own properties (data property and
|
||||
accessor property)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = {};
|
||||
var obj = {};
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
var properties = {
|
||||
foo1: {
|
||||
value: 200,
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
configurable: true
|
||||
},
|
||||
foo2: {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
};
|
||||
|
||||
Object.defineProperties(obj, properties);
|
||||
return dataPropertyAttributesAreCorrect(obj, "foo1", 200, true, true, true) && accessorPropertyAttributesAreCorrect(obj, "foo2", get_func, set_func, "setVerifyHelpProp", true, true);
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function set_func(value) {
|
||||
obj.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
var properties = {
|
||||
foo1: {
|
||||
value: 200,
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
configurable: true
|
||||
},
|
||||
foo2: {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
};
|
||||
|
||||
Object.defineProperties(obj, properties);
|
||||
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");
|
||||
|
||||
|
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
|
||||
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: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperties(arr, { length: {} });
|
||||
Object.defineProperties(arr, { length: {} });
|
||||
|
||||
var verifyValue = false;
|
||||
verifyValue = (arr.length === 0);
|
||||
if (arr.length !== 0) {
|
||||
$ERROR("Expected arr.length to be 0, actually " + arr.length);
|
||||
}
|
||||
|
||||
var verifyWritable = false;
|
||||
arr.length = 2;
|
||||
verifyWritable = (arr.length === 2);
|
||||
arr.length = 2;
|
||||
|
||||
var verifyEnumerable = false;
|
||||
for (var p in arr) {
|
||||
if (p === "length") {
|
||||
verifyEnumerable = true;
|
||||
}
|
||||
}
|
||||
verifyEqualTo(arr, "length", 2);
|
||||
|
||||
var verifyConfigurable = false;
|
||||
delete arr.length;
|
||||
verifyConfigurable = arr.hasOwnProperty("length");
|
||||
verifyWritable(arr, "length", "length", 5);
|
||||
|
||||
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
|
||||
}
|
||||
runTestCase(testcase);
|
||||
verifyNotEnumerable(arr, "length");
|
||||
|
||||
verifyNotConfigurable(arr, "length");
|
||||
|
@ -10,29 +10,35 @@ description: >
|
||||
Object.defineProperties - 'O' is a Function object which
|
||||
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
||||
step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var fun = function () { };
|
||||
var fun = function () { };
|
||||
|
||||
Object.defineProperty(fun, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(fun, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(fun, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(fun, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(fun, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
updating the [[Writable]] attribute of the length property from
|
||||
true to false (15.4.5.1 step 3.a.i)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
|
||||
var arr = [];
|
||||
Object.defineProperties(arr, {
|
||||
length: { writable: false }
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is an Array object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(arr, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(arr, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is a String object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var str = new String();
|
||||
var str = new String();
|
||||
|
||||
Object.defineProperty(str, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(str, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(str, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(str, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(str, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is a Boolean object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = new Boolean(false);
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
var obj = new Boolean(false);
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is a Number object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = new Number(-9);
|
||||
var obj = new Number(-9);
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is a Date object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = new Date();
|
||||
var obj = new Date();
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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: >
|
||||
Object.defineProperties - 'O' is a RegExp object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = new RegExp();
|
||||
var obj = new RegExp();
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
defined as data property when 'desc' is generic descriptor
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -9,30 +9,31 @@ es5id: 15.2.3.7-6-a-2
|
||||
description: >
|
||||
Object.defineProperties - 'P' is inherited data property (8.12.9
|
||||
step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
var proto = {};
|
||||
Object.defineProperty(proto, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
var Con = function () { };
|
||||
Con.prototype = proto;
|
||||
|
||||
var obj = new Con();
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(obj, "prop", 12, false, false, true);
|
||||
var obj = new Con();
|
||||
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(obj, "prop", 12);
|
||||
|
||||
verifyNotWritable(obj, "prop");
|
||||
|
||||
verifyNotEnumerable(obj, "prop");
|
||||
|
||||
verifyConfigurable(obj, "prop");
|
||||
|
||||
|
@ -10,23 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
named property, 'desc' is data descriptor, test updating all
|
||||
attribute values of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.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, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 1001, false, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 1001,
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "0", 1001);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -12,33 +12,34 @@ description: >
|
||||
[[Configurable]] of 'P' property in 'Attributes' is set as false
|
||||
value if [[Configurable]] is absent in accessor descriptor 'desc'
|
||||
(15.4.5.1 step 4.c)
|
||||
includes: [runTestCase.js]
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var beforeDeleted = false;
|
||||
var afterDeleted = false;
|
||||
arr.verifySetter = 100;
|
||||
var arr = [];
|
||||
arr.verifySetter = 100;
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: function (value) {
|
||||
arr.verifySetter = value;
|
||||
},
|
||||
get: function () {
|
||||
return arr.verifySetter;
|
||||
},
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
|
||||
beforeDeleted = arr.hasOwnProperty("0");
|
||||
delete arr[0];
|
||||
afterDeleted = arr.hasOwnProperty("0");
|
||||
|
||||
arr[0] = 101;
|
||||
|
||||
return beforeDeleted && afterDeleted && arr[0] === 101 && arr.verifySetter === 101;
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: function (value) {
|
||||
arr.verifySetter = value;
|
||||
},
|
||||
get: function () {
|
||||
return arr.verifySetter;
|
||||
},
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
if (!Object.prototype.hasOwnProperty.call(arr, "0")) {
|
||||
$ERROR("Expected hasOwnProperty to return true.");
|
||||
}
|
||||
|
||||
arr[0] = 101;
|
||||
|
||||
verifyEqualTo(arr, 0, 101);
|
||||
|
||||
if (arr.verifySetter !== 101) {
|
||||
$ERROR('Expected arr.verifySetter === 101, actually ' + arr.verifySetter);
|
||||
}
|
||||
|
||||
verifyNotConfigurable(arr, 0);
|
||||
|
@ -10,40 +10,41 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
named property, 'desc' is accessor descriptor, test updating all
|
||||
attribute values of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: function () {
|
||||
return 11;
|
||||
},
|
||||
set: function () { },
|
||||
configurable: true,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
|
||||
var setFun = function (value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
};
|
||||
var getFun = function () {
|
||||
return 14;
|
||||
};
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: getFun,
|
||||
set: setFun,
|
||||
configurable: false,
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", getFun, setFun, "setVerifyHelpProp", false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: function () {
|
||||
return 11;
|
||||
},
|
||||
set: function () { },
|
||||
configurable: true,
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
var setFun = function (value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
};
|
||||
var getFun = function () {
|
||||
return 14;
|
||||
};
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: getFun,
|
||||
set: setFun,
|
||||
configurable: false,
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "0", getFun());
|
||||
|
||||
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
|
||||
named property, 'P' makes no change if every field in 'desc' is
|
||||
absent (name is data property) (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.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, {
|
||||
"0": {}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 101, true, true, true);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {}
|
||||
});
|
||||
verifyEqualTo(arr, "0", 101);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -10,35 +10,33 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
named property, 'P' makes no change if every field in 'desc' is
|
||||
absent (name is accessor property) (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_func() {
|
||||
return 11;
|
||||
}
|
||||
function set_func(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_func() {
|
||||
return 11;
|
||||
}
|
||||
function set_func(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {}
|
||||
});
|
||||
verifyEqualTo(arr, "0", get_func());
|
||||
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
runTestCase(testcase);
|
||||
|
@ -11,25 +11,26 @@ description: >
|
||||
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
|
||||
data property) (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.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, {
|
||||
"0": {
|
||||
value: 100,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 100, true, true, true);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 100,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "0", 100);
|
||||
|
||||
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
|
||||
'desc' is the same value as the corresponding field in 'P'(desc is
|
||||
accessor property) (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var get_func = function () {
|
||||
return "100";
|
||||
};
|
||||
var set_func = function (value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
};
|
||||
var arr = [];
|
||||
var get_func = function () {
|
||||
return "100";
|
||||
};
|
||||
var set_func = function (value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
};
|
||||
|
||||
var descObj = {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
};
|
||||
|
||||
var properties = {
|
||||
"0": descObj
|
||||
};
|
||||
var descObj = {
|
||||
get: get_func,
|
||||
set: set_func,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
};
|
||||
|
||||
Object.defineProperty(arr, "0", descObj);
|
||||
var properties = {
|
||||
"0": descObj
|
||||
};
|
||||
|
||||
Object.defineProperties(arr, properties);
|
||||
Object.defineProperty(arr, "0", descObj);
|
||||
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true);
|
||||
}
|
||||
runTestCase(testcase);
|
||||
Object.defineProperties(arr, properties);
|
||||
|
||||
verifyEqualTo(arr, "0", get_func());
|
||||
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-21
|
||||
description: >
|
||||
Object.defineProperties - 'O' is an Error object which implements
|
||||
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var obj = new Error();
|
||||
var obj = new Error();
|
||||
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, "prop", {
|
||||
value: 11,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(obj, {
|
||||
prop: {
|
||||
value: 12,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
[[Value]] attribute value of 'name' are undefined (15.4.5.1 step
|
||||
4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: undefined
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: undefined
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: undefined
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -10,23 +10,24 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||
index property, both the [[Value]] field of 'desc' and the
|
||||
[[Value]] attribute value of 'name' are null (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: null
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: null
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: null
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", null, false, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: null
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", null);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -10,24 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||
index property, both the [[Value]] field of 'desc' and the
|
||||
[[Value]] attribute value of 'name' are NaN (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: NaN
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: NaN
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: NaN
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", NaN, false, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: NaN
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "0", NaN);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -10,27 +10,33 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'name' is an array
|
||||
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)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: -0
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: -0
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: +0
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", -0, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: +0
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
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)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: +0
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: +0
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: -0
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (e) {
|
||||
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", +0, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: -0
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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]]
|
||||
attribute value of 'name' are two numbers with same vaule
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: 101
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: 101
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 101
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 101, false, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 101
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 101);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -11,27 +11,25 @@ description: >
|
||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||
attribute value of 'name' are two strings which have same length
|
||||
and same characters in corresponding positions (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: "abcd"
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: "abcd"
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: "abcd"
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", "abcd", false, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: "abcd"
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", "abcd");
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,27 +11,25 @@ description: >
|
||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||
attribute value of 'name' are two booleans with same value
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", true, false, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", true);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,29 +11,28 @@ description: >
|
||||
index property, the [[Value]] field of 'desc' and the [[Value]]
|
||||
attribute value of 'name' are two objects which refer to the same
|
||||
object (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
var obj1 = { length: 10 };
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: obj1
|
||||
});
|
||||
var obj1 = { length: 10 };
|
||||
Object.defineProperty(arr, "0", {
|
||||
value: obj1
|
||||
});
|
||||
|
||||
var properties = {
|
||||
"0": {
|
||||
value: obj1
|
||||
}
|
||||
};
|
||||
try {
|
||||
Object.defineProperties(arr, properties);
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", obj1, false, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
var properties = {
|
||||
"0": {
|
||||
value: obj1
|
||||
}
|
||||
runTestCase(testcase);
|
||||
};
|
||||
|
||||
Object.defineProperties(arr, properties);
|
||||
verifyEqualTo(arr, "0", obj1);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -10,27 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Writable]] true, and
|
||||
the [[Writable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
writable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
writable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -10,28 +10,26 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Writable]] true, and
|
||||
the [[Writable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
writable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
writable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,27 +11,26 @@ description: >
|
||||
property, the [[Get]] field of 'desc' and the [[Get]] attribute
|
||||
value of 'P' are two objects which refer to the same object
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
function get_func() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: get_func
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: get_func
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_func
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, undefined, undefined, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_func
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", get_func());
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -11,31 +11,26 @@ description: >
|
||||
property, the [[Set]] field of 'desc' and the [[Set]] attribute
|
||||
value of 'P' are two objects which refer to the same object
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_func(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_func(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_func
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_func
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_func
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_func, "setVerifyHelpProp", false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_func
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -10,27 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Enumerable]] true, the
|
||||
[[Enumerable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
enumerable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
enumerable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -10,28 +10,26 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Enumerable]] true, the
|
||||
[[Enumerable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -10,27 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Configurable]] true,
|
||||
the [[Configurable]] field of 'desc' is true (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -10,27 +10,25 @@ description: >
|
||||
Object.defineProperties - 'O' is an Array, 'P' is an array index
|
||||
property that already exists on 'O' with [[Configurable]] true,
|
||||
the [[Configurable]] field of 'desc' is false (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false);
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,30 +11,35 @@ description: >
|
||||
property, TypeError is thrown if the [[Configurable]] attribute
|
||||
value of 'P' is false and the [[Configurable]] field of 'desc' is
|
||||
true (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
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,32 +12,38 @@ description: >
|
||||
value of 'P' is false, and [[Enumerable]] of 'desc' is present and
|
||||
its value is different from the [[Enumerable]] attribute value of
|
||||
'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false,
|
||||
enumerable: false
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false,
|
||||
enumerable: false
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
'desc' is data descriptor, and the [[Configurable]] attribute
|
||||
value of 'P' is false (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun,
|
||||
configurable: false
|
||||
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun,
|
||||
configurable: false
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||
|
||||
});
|
||||
verifyNotEnumerable(arr, "1");
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 13
|
||||
}
|
||||
});
|
||||
return false;
|
||||
verifyNotConfigurable(arr, "1");
|
||||
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
||||
}
|
||||
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'
|
||||
is accessor descriptor, and the [[Configurable]] attribute value
|
||||
of 'P' is false (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: function () { }
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: function () { }
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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'
|
||||
is converted from data property to accessor property (15.4.5.1
|
||||
step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||
var arr = [];
|
||||
arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: set_fun
|
||||
}
|
||||
});
|
||||
|
||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", true, true);
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: set_fun
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||
|
||||
verifyEnumerable(arr, "1");
|
||||
|
||||
verifyConfigurable(arr, "1");
|
||||
|
@ -12,28 +12,29 @@ description: >
|
||||
and the [[Configurable]] attribute value of 'P' is true, test 'P'
|
||||
is converted from accessor property to data property (15.4.5.1
|
||||
step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: function () {
|
||||
return 3;
|
||||
},
|
||||
configurable: true
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: function () {
|
||||
return 3;
|
||||
},
|
||||
configurable: true
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 12
|
||||
}
|
||||
});
|
||||
|
||||
return dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 12
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(arr, "1", 12);
|
||||
|
||||
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
|
||||
false and the [[Writable]] field of 'desc' is true. (15.4.5.1
|
||||
step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false,
|
||||
writable: false
|
||||
Object.defineProperty(arr, "1", {
|
||||
configurable: false,
|
||||
writable: false
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", undefined, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
from the type of the [[Value]] attribute value of 'P' (15.4.5.1
|
||||
step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false,
|
||||
writable: false
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 3,
|
||||
configurable: false,
|
||||
writable: false
|
||||
});
|
||||
|
||||
try {
|
||||
try {
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: "abc"
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: "abc"
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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'
|
||||
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)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: +0
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: +0
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: -0
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", +0, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: -0
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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'
|
||||
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)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: -0
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: -0
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: +0
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", -0, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: +0
|
||||
}
|
||||
});
|
||||
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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]]
|
||||
attribute value of 'P' are two numbers with different vaule
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 12
|
||||
});
|
||||
var arr = [];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 36
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, false);
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: 12
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: 36
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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]]
|
||||
attribute value of 'P' are two strings with different values
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: "abcd"
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: "abcd"
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: "efgh"
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", "abcd", false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: "efgh"
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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]]
|
||||
attribute value of 'P' are two booleans with different values
|
||||
(15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: false
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", true, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: false
|
||||
}
|
||||
});
|
||||
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
|
||||
step 1 )
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- fnGlobalObject.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js, fnGlobalObject.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
try {
|
||||
Object.defineProperty(fnGlobalObject(), "prop", {
|
||||
value: 11,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(fnGlobalObject(), "prop", {
|
||||
value: 11,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(fnGlobalObject(), {
|
||||
prop: {
|
||||
value: 12
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(fnGlobalObject(), "prop", 12, true, true, true);
|
||||
} finally {
|
||||
delete fnGlobalObject().prop;
|
||||
}
|
||||
Object.defineProperties(fnGlobalObject(), {
|
||||
prop: {
|
||||
value: 12
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyEqualTo(fnGlobalObject(), "prop", 12);
|
||||
|
||||
verifyWritable(fnGlobalObject(), "prop");
|
||||
|
||||
verifyEnumerable(fnGlobalObject(), "prop");
|
||||
|
||||
verifyConfigurable(fnGlobalObject(), "prop");
|
||||
|
||||
delete fnGlobalObject().prop;
|
||||
|
@ -13,30 +13,36 @@ description: >
|
||||
is data descriptor, [[Value]] field of 'desc' and the [[Value]]
|
||||
attribute value of 'P' are two objects which refer to the
|
||||
different objects (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var obj1 = { value: 12 };
|
||||
var obj2 = { value: 36 };
|
||||
var arr = [];
|
||||
var obj1 = { value: 12 };
|
||||
var obj2 = { value: 36 };
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: obj1
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
value: obj1
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: obj2
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", obj1, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
value: obj2
|
||||
}
|
||||
});
|
||||
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
two objects which refer to the different objects (15.4.5.1 step
|
||||
4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: function () { }
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: function () { }
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
||||
}
|
||||
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
|
||||
[[Set]] field of 'desc' is an object and the [[Set]] attribute
|
||||
value of 'P' is undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: undefined
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: set_fun
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: undefined
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "1", "setVerifyHelpProp");
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false);
|
||||
}
|
||||
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
|
||||
the [[Set]] field of 'desc' and the [[Set]] attribute value of 'P'
|
||||
are undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: undefined
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
set: undefined
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: undefined
|
||||
}
|
||||
});
|
||||
|
||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false);
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
set: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyNotEnumerable(arr, "1");
|
||||
|
||||
verifyNotConfigurable(arr, "1");
|
||||
|
@ -14,33 +14,37 @@ description: >
|
||||
[[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
|
||||
4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 36;
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: get_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: function () {
|
||||
return 12;
|
||||
}
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: get_fun
|
||||
});
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: function () {
|
||||
return 12;
|
||||
}
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyEqualTo(arr, "1", get_fun());
|
||||
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false);
|
||||
}
|
||||
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
|
||||
[[Get]] field of 'desc' is an object and the [[Get]] attribute
|
||||
value of 'P' is undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: get_fun
|
||||
});
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: get_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: undefined
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: undefined
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
the [[Get]] attribute value of 'P' are undefined (15.4.5.1 step
|
||||
4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: undefined
|
||||
});
|
||||
Object.defineProperty(arr, "1", {
|
||||
get: undefined
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: undefined
|
||||
}
|
||||
});
|
||||
|
||||
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"1": {
|
||||
get: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
|
||||
verifyNotEnumerable(arr, "1");
|
||||
|
||||
verifyNotConfigurable(arr, "1");
|
||||
|
||||
|
@ -11,24 +11,22 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test updating the [[Value]] attribute
|
||||
value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [12];
|
||||
var arr = [12];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 36
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 36, true, true, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 36
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 36);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,24 +11,21 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test setting the [[Value]] attribute
|
||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [12];
|
||||
var arr = [12];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: undefined
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, true, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", undefined);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,24 +11,22 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test setting the [[Value]] attribute
|
||||
value of 'P' from undefined to normal value (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [undefined];
|
||||
var arr = [undefined];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 12
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 12
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 12);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,24 +11,22 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test updating the [[Writable]]
|
||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [100];
|
||||
var arr = [100];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 100, false, true, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
writable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 100);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,24 +11,21 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test updating the [[Enumerable]]
|
||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [12];
|
||||
var arr = [12];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, false, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 12);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,24 +11,22 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test updating the [[Configurable]]
|
||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [12];
|
||||
var arr = [12];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, false);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 12);
|
||||
|
||||
verifyWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,26 +11,24 @@ description: >
|
||||
named property that already exists on 'O' is data property and
|
||||
'desc' is data descriptor, test updating multiple attribute values
|
||||
of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [12];
|
||||
var arr = [12];
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 36,
|
||||
writable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "0", 36, false, true, false);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
value: 36,
|
||||
writable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", 36);
|
||||
|
||||
verifyNotWritable(arr, "0");
|
||||
|
||||
verifyEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,31 +11,30 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
||||
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", get_fun());
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,27 +11,24 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test setting the [[Get]] attribute
|
||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: undefined
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,29 +11,28 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Get]] attribute
|
||||
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: undefined,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: undefined,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", get_fun());
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,33 +11,29 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
||||
value of 'P' with different getter function (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: function () { },
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: function () { },
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_fun
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_fun
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,25 +11,22 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test setting the [[Set]] attribute
|
||||
value of 'P' as undefined (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: function () { },
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: function () { },
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: undefined
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: undefined
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,32 +11,27 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Set]] attribute
|
||||
value of 'P' from undefined to function (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: undefined,
|
||||
configurable: true
|
||||
});
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: undefined,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_fun
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
set: set_fun
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,33 +11,28 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Enumerable]]
|
||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
enumerable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyConfigurable(arr, "0");
|
||||
|
@ -11,32 +11,28 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating the [[Configurable]]
|
||||
attribute value of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_fun,
|
||||
configurable: true
|
||||
});
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
set: set_fun,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, false);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
||||
|
@ -11,41 +11,38 @@ description: >
|
||||
named property that already exists on 'O' is accessor property and
|
||||
'desc' is accessor descriptor, test updating multiple attribute
|
||||
values of 'P' (15.4.5.1 step 4.c)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
function get_fun() {
|
||||
return 36;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "0", {
|
||||
get: function () {
|
||||
return 12;
|
||||
},
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, set_fun, "setVerifyHelpProp", false, false);
|
||||
} catch (ex) {
|
||||
return false;
|
||||
}
|
||||
Object.defineProperties(arr, {
|
||||
"0": {
|
||||
get: get_fun,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "0", get_fun());
|
||||
|
||||
verifyWritable(arr, "0", "setVerifyHelpProp");
|
||||
|
||||
verifyNotEnumerable(arr, "0");
|
||||
|
||||
verifyNotConfigurable(arr, "0");
|
||||
|
@ -11,23 +11,29 @@ description: >
|
||||
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
|
||||
5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
value: 12,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "property", 12, true, true, true) && arr.length === 0;
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
value: 12,
|
||||
writable: true,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "property", 12);
|
||||
|
||||
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
|
||||
property, and 'desc' is accessor descriptor, test 'P' is defined
|
||||
in 'O' with all correct attribute values (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 12;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
function get_fun() {
|
||||
return 12;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: get_fun,
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "setVerifyHelpProp", true, true) &&
|
||||
arr.length === 0;
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: get_fun,
|
||||
set: set_fun,
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "property", get_fun());
|
||||
|
||||
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||
|
||||
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
|
||||
accessor property of 'O', and 'desc' is accessor descriptor, test
|
||||
updating multiple attribute values of 'P' (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
function get_fun() {
|
||||
return 12;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.verifySetFun = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
get: function () {
|
||||
return 36;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
var arr = [];
|
||||
function get_fun() {
|
||||
return 12;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.verifySetFun = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
get: function () {
|
||||
return 36;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: get_fun,
|
||||
set: set_fun,
|
||||
enumerable: false
|
||||
}
|
||||
});
|
||||
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, true);
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: get_fun,
|
||||
set: set_fun,
|
||||
enumerable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "property", get_fun());
|
||||
|
||||
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
|
||||
property of 'O', and 'desc' is data descriptor, test updating
|
||||
multiple attribute values of 'P' (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||
var arr = [];
|
||||
arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true
|
||||
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
});
|
||||
return dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false) && arr.length === 0;
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
writable: false,
|
||||
enumerable: false,
|
||||
configurable: false
|
||||
}
|
||||
runTestCase(testcase);
|
||||
});
|
||||
verifyEqualTo(arr, "property", 12);
|
||||
|
||||
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
|
||||
[[Value]] attribute value of 'P' which is defined as unwritable
|
||||
and non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12
|
||||
});
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
value: 36
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
value: 36
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
[[Writable]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "property", {
|
||||
writable: false
|
||||
});
|
||||
Object.defineProperty(arr, "property", {
|
||||
writable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", undefined, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
writable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
[[Enumerable]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12,
|
||||
enumerable: false
|
||||
});
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12,
|
||||
enumerable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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
|
||||
[[Configurable]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- dataPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12
|
||||
});
|
||||
Object.defineProperty(arr, "property", {
|
||||
value: 12
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
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,37 +11,42 @@ description: >
|
||||
accessor property of 'O', test TypeError is thrown when updating
|
||||
the [[Get]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function get_fun() {
|
||||
return 37;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.verifySetFun = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
get: get_fun,
|
||||
set: set_fun
|
||||
});
|
||||
function get_fun() {
|
||||
return 37;
|
||||
}
|
||||
function set_fun(value) {
|
||||
arr.verifySetFun = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
get: get_fun,
|
||||
set: set_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: function () {
|
||||
return 36;
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
return (ex instanceof TypeError) &&
|
||||
accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, false);
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
get: function () {
|
||||
return 36;
|
||||
}
|
||||
}
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyEqualTo(arr, "property", get_fun());
|
||||
|
||||
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
|
||||
the [[Set]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
set: function () { }
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
set: function () { }
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
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
|
||||
the [[Enumerable]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun,
|
||||
enumerable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
enumerable: true
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun,
|
||||
enumerable: false
|
||||
});
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
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
|
||||
the [[Configurable]] attribute value of 'P' which is defined as
|
||||
non-configurable (15.4.5.1 step 5)
|
||||
includes:
|
||||
- runTestCase.js
|
||||
- accessorPropertyAttributesAreCorrect.js
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
function testcase() {
|
||||
|
||||
var arr = [];
|
||||
var arr = [];
|
||||
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
function set_fun(value) {
|
||||
arr.setVerifyHelpProp = value;
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun,
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
configurable: true
|
||||
}
|
||||
Object.defineProperty(arr, "property", {
|
||||
set: set_fun,
|
||||
configurable: false
|
||||
});
|
||||
});
|
||||
$ERROR("Expected an exception.");
|
||||
} catch (e) {
|
||||
verifyWritable(arr, "property", "setVerifyHelpProp");
|
||||
|
||||
try {
|
||||
Object.defineProperties(arr, {
|
||||
"property": {
|
||||
configurable: true
|
||||
}
|
||||
});
|
||||
return false;
|
||||
} catch (ex) {
|
||||
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);
|
||||
|
||||
}
|
||||
|
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