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:
smikes 2014-11-12 06:41:09 -07:00 committed by Brian Terlson
parent 5318ee7b1f
commit 49abae4f5e
502 changed files with 11688 additions and 10145 deletions

View File

@ -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;
}

View File

@ -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
View 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.");
}
}

View File

@ -9,23 +9,18 @@ es5id: 15.2.3.5-4-315
description: > description: >
Object.create - all properties in 'Properties' are enumerable Object.create - all properties in 'Properties' are enumerable
(data property and accessor property) (15.2.3.7 step 7) (data property and accessor property) (15.2.3.7 step 7)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var newObj = {};
function getFunc() {
var newObj = {};
function getFunc() {
return 10; return 10;
} }
function setFunc(value) { function setFunc(value) {
newObj.setVerifyHelpProp = value; newObj.setVerifyHelpProp = value;
} }
newObj = Object.create({}, { newObj = Object.create({}, {
foo1: { foo1: {
value: 200, value: 200,
enumerable: true, enumerable: true,
@ -38,8 +33,20 @@ function testcase() {
enumerable: true, enumerable: true,
configurable: true configurable: true
} }
}); });
return dataPropertyAttributesAreCorrect(newObj, "foo1", 200, true, true, true) &&
accessorPropertyAttributesAreCorrect(newObj, "foo2", getFunc, setFunc, "setVerifyHelpProp", true, true); verifyEqualTo(newObj, "foo1", 200);
}
runTestCase(testcase); verifyWritable(newObj, "foo1");
verifyEnumerable(newObj, "foo1");
verifyConfigurable(newObj, "foo1");
verifyEqualTo(newObj, "foo2", getFunc());
verifyWritable(newObj, "foo2", "setVerifyHelpProp");
verifyEnumerable(newObj, "foo2");
verifyConfigurable(newObj, "foo2");

View File

@ -9,28 +9,29 @@ es5id: 15.2.3.7-6-a-100
description: > description: >
Object.defineProperties - 'P' is data property, several attributes Object.defineProperties - 'P' is data property, several attributes
values of P and properties are different (8.12.9 step 12) values of P and properties are different (8.12.9 step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
value: 100, value: 100,
writable: true, writable: true,
configurable: true configurable: true
}); });
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
value: 200, value: 200,
writable: false, writable: false,
configurable: false configurable: false
} }
}); });
return dataPropertyAttributesAreCorrect(obj, "foo", 200, false, false, false); verifyEqualTo(obj, "foo", 200);
}
runTestCase(testcase); verifyNotWritable(obj, "foo");
verifyNotEnumerable(obj, "foo");
verifyNotConfigurable(obj, "foo");

View File

@ -10,38 +10,39 @@ description: >
Object.defineProperties - 'P' is accessor property, both Object.defineProperties - 'P' is accessor property, both
properties.[[Get]] and P.[[Get]] are two different values (8.12.9 properties.[[Get]] and P.[[Get]] are two different values (8.12.9
step 12) step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
function get_func2() { function get_func2() {
return 20; return 20;
} }
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
get: get_func2 get: get_func2
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(obj, "foo", get_func2());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -9,34 +9,33 @@ es5id: 15.2.3.7-6-a-102
description: > description: >
Object.defineProperties - 'P' is accessor property, P.[[Get]] is Object.defineProperties - 'P' is accessor property, P.[[Get]] is
present and properties.[[Get]] is undefined (8.12.9 step 12) present and properties.[[Get]] is undefined (8.12.9 step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
get: undefined get: undefined
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", undefined, set_func, "setVerifyHelpProp", true, true); verifyWritable(obj, "foo", "setVerifyHelpProp");
}
runTestCase(testcase); verifyEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-103
description: > description: >
Object.defineProperties - 'P' is accessor property, P.[[Get]] is Object.defineProperties - 'P' is accessor property, P.[[Get]] is
undefined and properties.[[Get]] is normal value (8.12.9 step 12) undefined and properties.[[Get]] is normal value (8.12.9 step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: undefined, get: undefined,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
function get_func() { function get_func() {
return 10; return 10;
} }
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
get: get_func get: get_func
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(obj, "foo", get_func());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -10,39 +10,40 @@ description: >
Object.defineProperties - 'P' is accessor property, both Object.defineProperties - 'P' is accessor property, both
properties.[[Set]] and P.[[Set]] are two different values (8.12.9 properties.[[Set]] and P.[[Set]] are two different values (8.12.9
step 12) step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func() { function set_func() {
return 10; return 10;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
function set_func2(value) { function set_func2(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
set: set_func2 set: set_func2
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func2, "setVerifyHelpProp", true, true); verifyEqualTo(obj, "foo", get_func());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -9,35 +9,36 @@ es5id: 15.2.3.7-6-a-106
description: > description: >
Object.defineProperties - 'P' is accessor property, P.[[Set]] is Object.defineProperties - 'P' is accessor property, P.[[Set]] is
undefined and properties.[[Set]] is normal value (8.12.9 step 12) undefined and properties.[[Set]] is normal value (8.12.9 step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: undefined, set: undefined,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
set: set_func set: set_func
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(obj, "foo", get_func());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-107
description: > description: >
Object.defineProperties - 'P' is accessor property, P.enumerable Object.defineProperties - 'P' is accessor property, P.enumerable
and properties.enumerable are different values (8.12.9 step 12) and properties.enumerable are different values (8.12.9 step 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
enumerable: false enumerable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", false, true); verifyEqualTo(obj, "foo", get_func());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyNotEnumerable(obj, "foo");
verifyConfigurable(obj, "foo");

View File

@ -9,34 +9,35 @@ es5id: 15.2.3.7-6-a-108
description: > description: >
Object.defineProperties - 'P' is accessor property, P.configurable Object.defineProperties - 'P' is accessor property, P.configurable
is true and properties.configurable is false is true and properties.configurable is false
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
configurable: false configurable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func, set_func, "setVerifyHelpProp", true, false); verifyEqualTo(obj, "foo", get_func());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyEnumerable(obj, "foo");
verifyNotConfigurable(obj, "foo");

View File

@ -10,40 +10,41 @@ description: >
Object.defineProperties - 'P' is accessor property, several Object.defineProperties - 'P' is accessor property, several
attributes values of P and properties are different (8.12.9 step attributes values of P and properties are different (8.12.9 step
12) 12)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func1() { function get_func1() {
return 10; return 10;
} }
function set_func1() { } function set_func1() { }
Object.defineProperty(obj, "foo", { Object.defineProperty(obj, "foo", {
get: get_func1, get: get_func1,
set: set_func1, set: set_func1,
configurable: true configurable: true
}); });
function get_func2() { function get_func2() {
return 20; return 20;
} }
function set_func2(value) { function set_func2(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
Object.defineProperties(obj, { Object.defineProperties(obj, {
foo: { foo: {
get: get_func2, get: get_func2,
set: set_func2, set: set_func2,
configurable: false configurable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(obj, "foo", get_func2, set_func2, "setVerifyHelpProp", false, false); verifyEqualTo(obj, "foo", get_func2());
}
runTestCase(testcase); verifyWritable(obj, "foo", "setVerifyHelpProp");
verifyNotEnumerable(obj, "foo");
verifyNotConfigurable(obj, "foo");

View File

@ -9,24 +9,20 @@ es5id: 15.2.3.7-6-a-110
description: > description: >
Object.defineProperties - all own properties (data property and Object.defineProperties - all own properties (data property and
accessor property) accessor property)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = {}; var obj = {};
function get_func() { function get_func() {
return 10; return 10;
} }
function set_func(value) { function set_func(value) {
obj.setVerifyHelpProp = value; obj.setVerifyHelpProp = value;
} }
var properties = { var properties = {
foo1: { foo1: {
value: 200, value: 200,
enumerable: true, enumerable: true,
@ -39,10 +35,21 @@ function testcase() {
enumerable: true, enumerable: true,
configurable: true configurable: true
} }
}; };
Object.defineProperties(obj, properties); Object.defineProperties(obj, properties);
return dataPropertyAttributesAreCorrect(obj, "foo1", 200, true, true, true) && accessorPropertyAttributesAreCorrect(obj, "foo2", get_func, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(obj, "foo1", 200);
verifyWritable(obj, "foo1");
verifyEnumerable(obj, "foo1");
verifyConfigurable(obj, "foo1");
verifyEqualTo(obj, "foo2", get_func());
verifyWritable(obj, "foo2", "setVerifyHelpProp");
verifyEnumerable(obj, "foo2");
verifyConfigurable(obj, "foo2");
}
runTestCase(testcase);

View 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");

View File

@ -10,32 +10,23 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is the length Object.defineProperties - 'O' is an Array, 'P' is the length
property of 'O', the [[Value]] field of 'desc' is absent, test property of 'O', the [[Value]] field of 'desc' is absent, test
every field in 'desc' is absent (15.4.5.1 step 3.a.i) every field in 'desc' is absent (15.4.5.1 step 3.a.i)
includes: [runTestCase.js] includes: [propertyHelper.js]
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperties(arr, { length: {} }); Object.defineProperties(arr, { length: {} });
var verifyValue = false; if (arr.length !== 0) {
verifyValue = (arr.length === 0); $ERROR("Expected arr.length to be 0, actually " + arr.length);
}
var verifyWritable = false; arr.length = 2;
arr.length = 2;
verifyWritable = (arr.length === 2);
var verifyEnumerable = false; verifyEqualTo(arr, "length", 2);
for (var p in arr) {
if (p === "length") {
verifyEnumerable = true;
}
}
var verifyConfigurable = false; verifyWritable(arr, "length", "length", 5);
delete arr.length;
verifyConfigurable = arr.hasOwnProperty("length");
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable; verifyNotEnumerable(arr, "length");
}
runTestCase(testcase); verifyNotConfigurable(arr, "length");

View File

@ -10,29 +10,35 @@ description: >
Object.defineProperties - 'O' is a Function object which Object.defineProperties - 'O' is a Function object which
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9 implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
step 1 ) step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var fun = function () { };
var fun = function () { };
Object.defineProperty(fun, "prop", { Object.defineProperty(fun, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(fun, { Object.defineProperties(fun, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(fun, "prop", 11, false, false, false); verifyEqualTo(fun, "prop", 11);
verifyNotWritable(fun, "prop");
verifyNotEnumerable(fun, "prop");
verifyNotConfigurable(fun, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,23 +11,20 @@ description: >
property of 'O', the [[Value]] field of 'desc' is absent, test property of 'O', the [[Value]] field of 'desc' is absent, test
updating the [[Writable]] attribute of the length property from updating the [[Writable]] attribute of the length property from
true to false (15.4.5.1 step 3.a.i) true to false (15.4.5.1 step 3.a.i)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = []; Object.defineProperties(arr, {
try {
Object.defineProperties(arr, {
length: { writable: false } length: { writable: false }
}); });
verifyEqualTo(arr, "length", 0);
verifyNotWritable(arr, "length");
verifyNotEnumerable(arr, "length");
verifyNotConfigurable(arr, "length");
return dataPropertyAttributesAreCorrect(arr, "length", 0, false, false, false);
} catch (e) {
return false;
}
}
runTestCase(testcase);

View File

@ -9,29 +9,35 @@ es5id: 15.2.3.7-6-a-13
description: > description: >
Object.defineProperties - 'O' is an Array object which implements Object.defineProperties - 'O' is an Array object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "prop", { Object.defineProperty(arr, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(arr, "prop", 11, false, false, false); verifyEqualTo(arr, "prop", 11);
verifyNotWritable(arr, "prop");
verifyNotEnumerable(arr, "prop");
verifyNotConfigurable(arr, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -9,29 +9,35 @@ es5id: 15.2.3.7-6-a-14
description: > description: >
Object.defineProperties - 'O' is a String object which implements Object.defineProperties - 'O' is a String object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var str = new String();
var str = new String();
Object.defineProperty(str, "prop", { Object.defineProperty(str, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(str, { Object.defineProperties(str, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(str, "prop", 11, false, false, false); verifyEqualTo(str, "prop", 11);
verifyNotWritable(str, "prop");
verifyNotEnumerable(str, "prop");
verifyNotConfigurable(str, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-15
description: > description: >
Object.defineProperties - 'O' is a Boolean object which implements Object.defineProperties - 'O' is a Boolean object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = new Boolean(false); var obj = new Boolean(false);
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false); verifyEqualTo(obj, "prop", 11);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyNotConfigurable(obj, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-16
description: > description: >
Object.defineProperties - 'O' is a Number object which implements Object.defineProperties - 'O' is a Number object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = new Number(-9); var obj = new Number(-9);
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false); verifyEqualTo(obj, "prop", 11);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyNotConfigurable(obj, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-18
description: > description: >
Object.defineProperties - 'O' is a Date object which implements Object.defineProperties - 'O' is a Date object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = new Date(); var obj = new Date();
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false); verifyEqualTo(obj, "prop", 11);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyNotConfigurable(obj, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-19
description: > description: >
Object.defineProperties - 'O' is a RegExp object which implements Object.defineProperties - 'O' is a RegExp object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = new RegExp(); var obj = new RegExp();
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false); verifyEqualTo(obj, "prop", 11);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyNotConfigurable(obj, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,20 +11,21 @@ description: >
named property, 'P' property doesn't exist in 'O', test 'P' is named property, 'P' property doesn't exist in 'O', test 'P' is
defined as data property when 'desc' is generic descriptor defined as data property when 'desc' is generic descriptor
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
enumerable: true enumerable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false); verifyEqualTo(arr, "0", undefined);
}
runTestCase(testcase); verifyNotWritable(arr, "0");
verifyEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -9,30 +9,31 @@ es5id: 15.2.3.7-6-a-2
description: > description: >
Object.defineProperties - 'P' is inherited data property (8.12.9 Object.defineProperties - 'P' is inherited data property (8.12.9
step 1 ) step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var proto = {};
var proto = {}; Object.defineProperty(proto, "prop", {
Object.defineProperty(proto, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
var Con = function () { }; var Con = function () { };
Con.prototype = proto; Con.prototype = proto;
var obj = new Con(); var obj = new Con();
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return dataPropertyAttributesAreCorrect(obj, "prop", 12, false, false, true); verifyEqualTo(obj, "prop", 12);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyConfigurable(obj, "prop");
}
runTestCase(testcase);

View File

@ -10,23 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'desc' is data descriptor, test updating all named property, 'desc' is data descriptor, test updating all
attribute values of 'P' (15.4.5.1 step 4.c) attribute values of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [1]; // default value of attributes: writable: true, configurable: true, enumerable: true
var arr = [1]; // default value of attributes: writable: true, configurable: true, enumerable: true
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: 1001, value: 1001,
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: false configurable: false
} }
}); });
verifyEqualTo(arr, "0", 1001);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");
return dataPropertyAttributesAreCorrect(arr, "0", 1001, false, false, false);
}
runTestCase(testcase);

View File

@ -12,16 +12,13 @@ description: >
[[Configurable]] of 'P' property in 'Attributes' is set as false [[Configurable]] of 'P' property in 'Attributes' is set as false
value if [[Configurable]] is absent in accessor descriptor 'desc' value if [[Configurable]] is absent in accessor descriptor 'desc'
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: [runTestCase.js] includes: [propertyHelper.js]
---*/ ---*/
function testcase() { var arr = [];
var arr = []; arr.verifySetter = 100;
var beforeDeleted = false;
var afterDeleted = false;
arr.verifySetter = 100;
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
set: function (value) { set: function (value) {
arr.verifySetter = value; arr.verifySetter = value;
@ -31,14 +28,18 @@ function testcase() {
}, },
enumerable: true enumerable: true
} }
}); });
beforeDeleted = arr.hasOwnProperty("0"); if (!Object.prototype.hasOwnProperty.call(arr, "0")) {
delete arr[0]; $ERROR("Expected hasOwnProperty to return true.");
afterDeleted = arr.hasOwnProperty("0"); }
arr[0] = 101; arr[0] = 101;
return beforeDeleted && afterDeleted && arr[0] === 101 && arr.verifySetter === 101; verifyEqualTo(arr, 0, 101);
}
runTestCase(testcase); if (arr.verifySetter !== 101) {
$ERROR('Expected arr.verifySetter === 101, actually ' + arr.verifySetter);
}
verifyNotConfigurable(arr, 0);

View File

@ -10,15 +10,12 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'desc' is accessor descriptor, test updating all named property, 'desc' is accessor descriptor, test updating all
attribute values of 'P' (15.4.5.1 step 4.c) attribute values of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: function () { get: function () {
return 11; return 11;
@ -27,23 +24,27 @@ function testcase() {
configurable: true, configurable: true,
enumerable: true enumerable: true
} }
}); });
var setFun = function (value) { var setFun = function (value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
}; };
var getFun = function () { var getFun = function () {
return 14; return 14;
}; };
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: getFun, get: getFun,
set: setFun, set: setFun,
configurable: false, configurable: false,
enumerable: false enumerable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", getFun, setFun, "setVerifyHelpProp", false, false); verifyEqualTo(arr, "0", getFun());
}
runTestCase(testcase); verifyWritable(arr, "0", "setVerifyHelpProp");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -10,23 +10,21 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'P' makes no change if every field in 'desc' is named property, 'P' makes no change if every field in 'desc' is
absent (name is data property) (15.4.5.1 step 4.c) absent (name is data property) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
arr[0] = 101; // default value of attributes: writable: true, configurable: true, enumerable: true arr[0] = 101; // default value of attributes: writable: true, configurable: true, enumerable: true
try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": {} "0": {}
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 101, true, true, true); verifyEqualTo(arr, "0", 101);
} catch (e) {
return false; verifyWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -10,35 +10,33 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'P' makes no change if every field in 'desc' is named property, 'P' makes no change if every field in 'desc' is
absent (name is accessor property) (15.4.5.1 step 4.c) absent (name is accessor property) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function get_func() { function get_func() {
return 11; return 11;
} }
function set_func(value) { function set_func(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": {} "0": {}
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(arr, "0", get_func());
} catch (e) {
return false; verifyWritable(arr, "0", "setVerifyHelpProp");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,25 +11,26 @@ description: >
named property, 'P' makes no change if the value of every field in named property, 'P' makes no change if the value of every field in
'desc' is the same value as the corresponding field in 'P'(desc is 'desc' is the same value as the corresponding field in 'P'(desc is
data property) (15.4.5.1 step 4.c) data property) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
arr[0] = 100; // default value of attributes: writable: true, configurable: true, enumerable: true arr[0] = 100; // default value of attributes: writable: true, configurable: true, enumerable: true
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: 100, value: 100,
writable: true, writable: true,
enumerable: true, enumerable: true,
configurable: true configurable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 100, true, true, true); verifyEqualTo(arr, "0", 100);
}
runTestCase(testcase); verifyWritable(arr, "0");
verifyEnumerable(arr, "0");
verifyConfigurable(arr, "0");

View File

@ -11,35 +11,36 @@ description: >
named property, 'P' makes no change if the value of every field in named property, 'P' makes no change if the value of every field in
'desc' is the same value as the corresponding field in 'P'(desc is 'desc' is the same value as the corresponding field in 'P'(desc is
accessor property) (15.4.5.1 step 4.c) accessor property) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = []; var get_func = function () {
var get_func = function () {
return "100"; return "100";
}; };
var set_func = function (value) { var set_func = function (value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
}; };
var descObj = { var descObj = {
get: get_func, get: get_func,
set: set_func, set: set_func,
enumerable: true, enumerable: true,
configurable: true configurable: true
}; };
var properties = { var properties = {
"0": descObj "0": descObj
}; };
Object.defineProperty(arr, "0", descObj); Object.defineProperty(arr, "0", descObj);
Object.defineProperties(arr, properties); Object.defineProperties(arr, properties);
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, set_func, "setVerifyHelpProp", true, true); verifyEqualTo(arr, "0", get_func());
}
runTestCase(testcase); verifyWritable(arr, "0", "setVerifyHelpProp");
verifyEnumerable(arr, "0");
verifyConfigurable(arr, "0");

View File

@ -9,30 +9,36 @@ es5id: 15.2.3.7-6-a-21
description: > description: >
Object.defineProperties - 'O' is an Error object which implements Object.defineProperties - 'O' is an Error object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 ) its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var obj = new Error(); var obj = new Error();
Object.defineProperty(obj, "prop", { Object.defineProperty(obj, "prop", {
value: 11, value: 11,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(obj, { Object.defineProperties(obj, {
prop: { prop: {
value: 12, value: 12,
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return e instanceof TypeError && dataPropertyAttributesAreCorrect(obj, "prop", 11, false, false, false); verifyEqualTo(obj, "prop", 11);
verifyNotWritable(obj, "prop");
verifyNotEnumerable(obj, "prop");
verifyNotConfigurable(obj, "prop");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,23 +11,24 @@ description: >
index property, both the [[Value]] field of 'desc' and the index property, both the [[Value]] field of 'desc' and the
[[Value]] attribute value of 'name' are undefined (15.4.5.1 step [[Value]] attribute value of 'name' are undefined (15.4.5.1 step
4.c) 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: undefined value: undefined
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: undefined value: undefined
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false); verifyEqualTo(arr, "0", undefined);
}
runTestCase(testcase); verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -10,23 +10,24 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array Object.defineProperties - 'O' is an Array, 'name' is an array
index property, both the [[Value]] field of 'desc' and the index property, both the [[Value]] field of 'desc' and the
[[Value]] attribute value of 'name' are null (15.4.5.1 step 4.c) [[Value]] attribute value of 'name' are null (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: null value: null
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: null value: null
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", null, false, false, false); verifyEqualTo(arr, "0", null);
}
runTestCase(testcase); verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -10,24 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array Object.defineProperties - 'O' is an Array, 'name' is an array
index property, both the [[Value]] field of 'desc' and the index property, both the [[Value]] field of 'desc' and the
[[Value]] attribute value of 'name' are NaN (15.4.5.1 step 4.c) [[Value]] attribute value of 'name' are NaN (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: NaN value: NaN
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: NaN value: NaN
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", NaN, false, false, false); verifyEqualTo(arr, "0", NaN);
}
runTestCase(testcase); verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -10,27 +10,33 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array Object.defineProperties - 'O' is an Array, 'name' is an array
index property, the [[Value]] field of 'desc' is +0, and the index property, the [[Value]] field of 'desc' is +0, and the
[[Value]] attribute value of 'name' is -0 (15.4.5.1 step 4.c) [[Value]] attribute value of 'name' is -0 (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: -0 value: -0
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: +0 value: +0
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", -0, false, false, false); verifyEqualTo(arr, "0", -0);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -10,27 +10,33 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array Object.defineProperties - 'O' is an Array, 'name' is an array
index property, the [[Value]] field of 'desc' is -0, and the index property, the [[Value]] field of 'desc' is -0, and the
[[Value]] attribute value of 'name' is +0 (15.4.5.1 step 4.c) [[Value]] attribute value of 'name' is +0 (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: +0 value: +0
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
value: -0 value: -0
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (e) { } catch (e) {
return (e instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "0", +0, false, false, false); verifyEqualTo(arr, "0", +0);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,27 +11,24 @@ description: >
index property, the [[Value]] field of 'desc' and the [[Value]] index property, the [[Value]] field of 'desc' and the [[Value]]
attribute value of 'name' are two numbers with same vaule attribute value of 'name' are two numbers with same vaule
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: 101 value: 101
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: 101 value: 101
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 101, false, false, false); verifyEqualTo(arr, "0", 101);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,27 +11,25 @@ description: >
index property, the [[Value]] field of 'desc' and the [[Value]] index property, the [[Value]] field of 'desc' and the [[Value]]
attribute value of 'name' are two strings which have same length attribute value of 'name' are two strings which have same length
and same characters in corresponding positions (15.4.5.1 step 4.c) and same characters in corresponding positions (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: "abcd" value: "abcd"
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: "abcd" value: "abcd"
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", "abcd", false, false, false); verifyEqualTo(arr, "0", "abcd");
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,27 +11,25 @@ description: >
index property, the [[Value]] field of 'desc' and the [[Value]] index property, the [[Value]] field of 'desc' and the [[Value]]
attribute value of 'name' are two booleans with same value attribute value of 'name' are two booleans with same value
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: true value: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: true value: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", true, false, false, false); verifyEqualTo(arr, "0", true);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,29 +11,28 @@ description: >
index property, the [[Value]] field of 'desc' and the [[Value]] index property, the [[Value]] field of 'desc' and the [[Value]]
attribute value of 'name' are two objects which refer to the same attribute value of 'name' are two objects which refer to the same
object (15.4.5.1 step 4.c) object (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
var obj1 = { length: 10 }; var obj1 = { length: 10 };
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
value: obj1 value: obj1
}); });
var properties = { var properties = {
"0": { "0": {
value: obj1 value: obj1
} }
}; };
try {
Object.defineProperties(arr, properties); Object.defineProperties(arr, properties);
return dataPropertyAttributesAreCorrect(arr, "0", obj1, false, false, false); verifyEqualTo(arr, "0", obj1);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -10,27 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Writable]] true, and property that already exists on 'O' with [[Writable]] true, and
the [[Writable]] field of 'desc' is true (15.4.5.1 step 4.c) the [[Writable]] field of 'desc' is true (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
writable: true writable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
writable: true writable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, false, false); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -10,28 +10,26 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Writable]] true, and property that already exists on 'O' with [[Writable]] true, and
the [[Writable]] field of 'desc' is false (15.4.5.1 step 4.c) the [[Writable]] field of 'desc' is false (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
writable: true, writable: true,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
writable: false writable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,27 +11,26 @@ description: >
property, the [[Get]] field of 'desc' and the [[Get]] attribute property, the [[Get]] field of 'desc' and the [[Get]] attribute
value of 'P' are two objects which refer to the same object value of 'P' are two objects which refer to the same object
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function get_func() { function get_func() {
return 10; return 10;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: get_func get: get_func
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: get_func get: get_func
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", get_func, undefined, undefined, false, false); verifyEqualTo(arr, "0", get_func());
}
runTestCase(testcase); verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -11,31 +11,26 @@ description: >
property, the [[Set]] field of 'desc' and the [[Set]] attribute property, the [[Set]] field of 'desc' and the [[Set]] attribute
value of 'P' are two objects which refer to the same object value of 'P' are two objects which refer to the same object
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function set_func(value) { function set_func(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: set_func set: set_func
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
set: set_func set: set_func
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_func, "setVerifyHelpProp", false, false); verifyWritable(arr, "0", "setVerifyHelpProp");
} catch (e) {
return false; verifyNotEnumerable(arr, "0");
}
} verifyNotConfigurable(arr, "0");
runTestCase(testcase);

View File

@ -10,27 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Enumerable]] true, the property that already exists on 'O' with [[Enumerable]] true, the
[[Enumerable]] field of 'desc' is true (15.4.5.1 step 4.c) [[Enumerable]] field of 'desc' is true (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
enumerable: true enumerable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
enumerable: true enumerable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -10,28 +10,26 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Enumerable]] true, the property that already exists on 'O' with [[Enumerable]] true, the
[[Enumerable]] field of 'desc' is false (15.4.5.1 step 4.c) [[Enumerable]] field of 'desc' is false (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
enumerable: false enumerable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -10,27 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Configurable]] true, property that already exists on 'O' with [[Configurable]] true,
the [[Configurable]] field of 'desc' is true (15.4.5.1 step 4.c) the [[Configurable]] field of 'desc' is true (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
configurable: true configurable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, true); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -10,27 +10,25 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index Object.defineProperties - 'O' is an Array, 'P' is an array index
property that already exists on 'O' with [[Configurable]] true, property that already exists on 'O' with [[Configurable]] true,
the [[Configurable]] field of 'desc' is false (15.4.5.1 step 4.c) the [[Configurable]] field of 'desc' is false (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
configurable: false configurable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false); verifyEqualTo(arr, "0", undefined);
} catch (e) {
return false; verifyNotWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,30 +11,35 @@ description: >
property, TypeError is thrown if the [[Configurable]] attribute property, TypeError is thrown if the [[Configurable]] attribute
value of 'P' is false and the [[Configurable]] field of 'desc' is value of 'P' is false and the [[Configurable]] field of 'desc' is
true (15.4.5.1 step 4.c) true (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: 3, value: 3,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: 13, value: 13,
configurable: true configurable: true
} }
}); });
return false; } catch (e) {
} catch (ex) { verifyEqualTo(arr, "1", 3);
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -12,32 +12,38 @@ description: >
value of 'P' is false, and [[Enumerable]] of 'desc' is present and value of 'P' is false, and [[Enumerable]] of 'desc' is present and
its value is different from the [[Enumerable]] attribute value of its value is different from the [[Enumerable]] attribute value of
'P' (15.4.5.1 step 4.c) 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: 3, value: 3,
configurable: false, configurable: false,
enumerable: false enumerable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: 13, value: 13,
enumerable: true enumerable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false); verifyEqualTo(arr, "1", 3);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,35 +11,39 @@ description: >
property, TypeError is thrown if 'P' is accessor property, and property, TypeError is thrown if 'P' is accessor property, and
'desc' is data descriptor, and the [[Configurable]] attribute 'desc' is data descriptor, and the [[Configurable]] attribute
value of 'P' is false (15.4.5.1 step 4.c) value of 'P' is false (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
set: set_fun, set: set_fun,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: 13 value: 13
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "1", "setVerifyHelpProp");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,29 +11,35 @@ description: >
property, TypeError is thrown if 'P' is data property, and'desc' property, TypeError is thrown if 'P' is data property, and'desc'
is accessor descriptor, and the [[Configurable]] attribute value is accessor descriptor, and the [[Configurable]] attribute value
of 'P' is false (15.4.5.1 step 4.c) of 'P' is false (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: 3, value: 3,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
set: function () { } set: function () { }
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false); verifyEqualTo(arr, "1", 3);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -12,25 +12,24 @@ description: >
and the [[Configurable]] attribute value of 'P' is true, test 'P' and the [[Configurable]] attribute value of 'P' is true, test 'P'
is converted from data property to accessor property (15.4.5.1 is converted from data property to accessor property (15.4.5.1
step 4.c) step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = []; arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
arr[1] = 3; // default value of attributes: writable: true, configurable: true, enumerable: true
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
set: set_fun set: set_fun
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", true, true); verifyWritable(arr, "1", "setVerifyHelpProp");
}
runTestCase(testcase); verifyEnumerable(arr, "1");
verifyConfigurable(arr, "1");

View File

@ -12,28 +12,29 @@ description: >
and the [[Configurable]] attribute value of 'P' is true, test 'P' and the [[Configurable]] attribute value of 'P' is true, test 'P'
is converted from accessor property to data property (15.4.5.1 is converted from accessor property to data property (15.4.5.1
step 4.c) step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
get: function () { get: function () {
return 3; return 3;
}, },
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: 12 value: 12
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, true); verifyEqualTo(arr, "1", 12);
}
runTestCase(testcase); verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyConfigurable(arr, "1");

View File

@ -13,30 +13,36 @@ description: >
TypeError is thrown if the [[Writable]] attribute value of 'P' is TypeError is thrown if the [[Writable]] attribute value of 'P' is
false and the [[Writable]] field of 'desc' is true. (15.4.5.1 false and the [[Writable]] field of 'desc' is true. (15.4.5.1
step 4.c) step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
configurable: false, configurable: false,
writable: false writable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
writable: true writable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", undefined, false, false, false); verifyEqualTo(arr, "1", undefined);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -14,31 +14,37 @@ description: >
false, and the type of the [[Value]] field of 'desc' is different false, and the type of the [[Value]] field of 'desc' is different
from the type of the [[Value]] attribute value of 'P' (15.4.5.1 from the type of the [[Value]] attribute value of 'P' (15.4.5.1
step 4.c) step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: 3, value: 3,
configurable: false, configurable: false,
writable: false writable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: "abc" value: "abc"
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 3, false, false, false); verifyEqualTo(arr, "1", 3);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -12,27 +12,33 @@ description: >
data property with [[Configurable]], [[Writable]] false, 'desc' data property with [[Configurable]], [[Writable]] false, 'desc'
is data descriptor, [[Value]] field of 'desc' is +0, and the is data descriptor, [[Value]] field of 'desc' is +0, and the
[[Value]] attribute value of 'P' is -0 (15.4.5.1 step 4.c) [[Value]] attribute value of 'P' is -0 (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: +0 value: +0
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: -0 value: -0
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", +0, false, false, false); verifyEqualTo(arr, "1", +0);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -12,28 +12,34 @@ description: >
data property with [[Configurable]], [[Writable]] false, 'desc' data property with [[Configurable]], [[Writable]] false, 'desc'
is data descriptor, [[Value]] field of 'desc' is -0, and the is data descriptor, [[Value]] field of 'desc' is -0, and the
[[Value]] attribute value of 'P' is +0 (15.4.5.1 step 4.c) [[Value]] attribute value of 'P' is +0 (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: -0 value: -0
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: +0 value: +0
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", -0, false, false, false); verifyEqualTo(arr, "1", -0);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,27 +13,34 @@ description: >
is data descriptor, [[Value]] field of 'desc' and the [[Value]] is data descriptor, [[Value]] field of 'desc' and the [[Value]]
attribute value of 'P' are two numbers with different vaule attribute value of 'P' are two numbers with different vaule
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "1", { var arr = [];
Object.defineProperty(arr, "1", {
value: 12 value: 12
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: 36 value: 36
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", 12, false, false, false); verifyEqualTo(arr, "1", 12);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,27 +13,33 @@ description: >
is data descriptor, [[Value]] field of 'desc' and the [[Value]] is data descriptor, [[Value]] field of 'desc' and the [[Value]]
attribute value of 'P' are two strings with different values attribute value of 'P' are two strings with different values
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: "abcd" value: "abcd"
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: "efgh" value: "efgh"
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", "abcd", false, false, false); verifyEqualTo(arr, "1", "abcd");
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,28 +13,34 @@ description: >
is data descriptor, [[Value]] field of 'desc' and the [[Value]] is data descriptor, [[Value]] field of 'desc' and the [[Value]]
attribute value of 'P' are two booleans with different values attribute value of 'P' are two booleans with different values
(15.4.5.1 step 4.c) (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: true value: true
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: false value: false
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", true, false, false, false); verifyEqualTo(arr, "1", true);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -10,30 +10,29 @@ description: >
Object.defineProperties - 'O' is the global object which Object.defineProperties - 'O' is the global object which
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9 implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
step 1 ) step 1 )
includes: includes: [propertyHelper.js, fnGlobalObject.js]
- runTestCase.js
- fnGlobalObject.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
try { Object.defineProperty(fnGlobalObject(), "prop", {
Object.defineProperty(fnGlobalObject(), "prop", { value: 11,
value: 11, writable: true,
writable: true, enumerable: true,
enumerable: true, configurable: true
configurable: true });
});
Object.defineProperties(fnGlobalObject(), { Object.defineProperties(fnGlobalObject(), {
prop: { prop: {
value: 12 value: 12
} }
}); });
return dataPropertyAttributesAreCorrect(fnGlobalObject(), "prop", 12, true, true, true);
} finally { verifyEqualTo(fnGlobalObject(), "prop", 12);
delete fnGlobalObject().prop;
} verifyWritable(fnGlobalObject(), "prop");
}
runTestCase(testcase); verifyEnumerable(fnGlobalObject(), "prop");
verifyConfigurable(fnGlobalObject(), "prop");
delete fnGlobalObject().prop;

View File

@ -13,30 +13,36 @@ description: >
is data descriptor, [[Value]] field of 'desc' and the [[Value]] is data descriptor, [[Value]] field of 'desc' and the [[Value]]
attribute value of 'P' are two objects which refer to the attribute value of 'P' are two objects which refer to the
different objects (15.4.5.1 step 4.c) different objects (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = []; var obj1 = { value: 12 };
var obj1 = { value: 12 }; var obj2 = { value: 36 };
var obj2 = { value: 36 };
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
value: obj1 value: obj1
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
value: obj2 value: obj2
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "1", obj1, false, false, false); verifyEqualTo(arr, "1", obj1);
verifyNotWritable(arr, "1");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -14,31 +14,35 @@ description: >
[[Set]] field of 'desc' and the [[Set]] attribute value of 'P' are [[Set]] field of 'desc' and the [[Set]] attribute value of 'P' are
two objects which refer to the different objects (15.4.5.1 step two objects which refer to the different objects (15.4.5.1 step
4.c) 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
set: set_fun set: set_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
set: function () { } set: function () { }
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "1", "setVerifyHelpProp");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,31 +13,35 @@ description: >
descriptor, the [[Set]] field of 'desc' is present, and the descriptor, the [[Set]] field of 'desc' is present, and the
[[Set]] field of 'desc' is an object and the [[Set]] attribute [[Set]] field of 'desc' is an object and the [[Set]] attribute
value of 'P' is undefined (15.4.5.1 step 4.c) value of 'P' is undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
set: set_fun set: set_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
set: undefined set: undefined
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "1", "setVerifyHelpProp");
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,24 +13,21 @@ description: >
accessor descriptor, the [[Set]] field of 'desc' is present, and accessor descriptor, the [[Set]] field of 'desc' is present, and
the [[Set]] field of 'desc' and the [[Set]] attribute value of 'P' the [[Set]] field of 'desc' and the [[Set]] attribute value of 'P'
are undefined (15.4.5.1 step 4.c) are undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
set: undefined set: undefined
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
set: undefined set: undefined
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false); verifyNotEnumerable(arr, "1");
}
runTestCase(testcase); verifyNotConfigurable(arr, "1");

View File

@ -14,22 +14,19 @@ description: >
[[Get]] field of 'desc' and the [[Get]] attribute value of 'P' are [[Get]] field of 'desc' and the [[Get]] attribute value of 'P' are
two objects which refer to the different objects (15.4.5.1 step two objects which refer to the different objects (15.4.5.1 step
4.c) 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function get_fun() { function get_fun() {
return 36; return 36;
} }
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
get: get_fun get: get_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
get: function () { get: function () {
@ -38,9 +35,16 @@ function testcase() {
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false); verifyEqualTo(arr, "1", get_fun());
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -13,30 +13,34 @@ description: >
descriptor, the [[Get]] field of 'desc' is present, and the descriptor, the [[Get]] field of 'desc' is present, and the
[[Get]] field of 'desc' is an object and the [[Get]] attribute [[Get]] field of 'desc' is an object and the [[Get]] attribute
value of 'P' is undefined (15.4.5.1 step 4.c) value of 'P' is undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function get_fun() { function get_fun() {
return 36; return 36;
} }
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
get: get_fun get: get_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"1": { "1": {
get: undefined get: undefined
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "1", get_fun, undefined, undefined, false, false); verifyEqualTo(arr, "1", get_fun());
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -14,28 +14,22 @@ description: >
field of 'desc' is present, and the [[Get]] field of 'desc' and field of 'desc' is present, and the [[Get]] field of 'desc' and
the [[Get]] attribute value of 'P' are undefined (15.4.5.1 step the [[Get]] attribute value of 'P' are undefined (15.4.5.1 step
4.c) 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
Object.defineProperty(arr, "1", { Object.defineProperty(arr, "1", {
get: undefined get: undefined
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"1": { "1": {
get: undefined get: undefined
} }
}); });
verifyNotEnumerable(arr, "1");
verifyNotConfigurable(arr, "1");
return accessorPropertyAttributesAreCorrect(arr, "1", undefined, undefined, undefined, false, false);
} catch (ex) {
return false;
}
}
runTestCase(testcase);

View File

@ -11,24 +11,22 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test updating the [[Value]] attribute 'desc' is data descriptor, test updating the [[Value]] attribute
value of 'P' (15.4.5.1 step 4.c) value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [12]; var arr = [12];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: 36 value: 36
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 36, true, true, true); verifyEqualTo(arr, "0", 36);
} catch (ex) {
return false; verifyWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,24 +11,21 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test setting the [[Value]] attribute 'desc' is data descriptor, test setting the [[Value]] attribute
value of 'P' as undefined (15.4.5.1 step 4.c) value of 'P' as undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [12]; var arr = [12];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: undefined value: undefined
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", undefined, true, true, true); verifyEqualTo(arr, "0", undefined);
} catch (ex) {
return false; verifyWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,24 +11,22 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test setting the [[Value]] attribute 'desc' is data descriptor, test setting the [[Value]] attribute
value of 'P' from undefined to normal value (15.4.5.1 step 4.c) value of 'P' from undefined to normal value (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [undefined]; var arr = [undefined];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: 12 value: 12
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, true); verifyEqualTo(arr, "0", 12);
} catch (ex) {
return false; verifyWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,24 +11,22 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test updating the [[Writable]] 'desc' is data descriptor, test updating the [[Writable]]
attribute value of 'P' (15.4.5.1 step 4.c) attribute value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [100]; var arr = [100];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
writable: false writable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 100, false, true, true); verifyEqualTo(arr, "0", 100);
} catch (ex) {
return false; verifyNotWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,24 +11,21 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test updating the [[Enumerable]] 'desc' is data descriptor, test updating the [[Enumerable]]
attribute value of 'P' (15.4.5.1 step 4.c) attribute value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [12]; var arr = [12];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
enumerable: false enumerable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, false, true); verifyEqualTo(arr, "0", 12);
} catch (ex) {
return false; verifyWritable(arr, "0");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyConfigurable(arr, "0");

View File

@ -11,24 +11,22 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test updating the [[Configurable]] 'desc' is data descriptor, test updating the [[Configurable]]
attribute value of 'P' (15.4.5.1 step 4.c) attribute value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [12]; var arr = [12];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
configurable: false configurable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 12, true, true, false); verifyEqualTo(arr, "0", 12);
} catch (ex) {
return false; verifyWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,26 +11,24 @@ description: >
named property that already exists on 'O' is data property and named property that already exists on 'O' is data property and
'desc' is data descriptor, test updating multiple attribute values 'desc' is data descriptor, test updating multiple attribute values
of 'P' (15.4.5.1 step 4.c) of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = [12]; var arr = [12];
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
value: 36, value: 36,
writable: false, writable: false,
configurable: false configurable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "0", 36, false, true, false); verifyEqualTo(arr, "0", 36);
} catch (ex) {
return false; verifyNotWritable(arr, "0");
}
} verifyEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,31 +11,30 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Get]] attribute 'desc' is accessor descriptor, test updating the [[Get]] attribute
value of 'P' with different getter function (15.4.5.1 step 4.c) value of 'P' with different getter function (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function get_fun() { function get_fun() {
return 36; return 36;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: function () { get: function () {
return 12; return 12;
}, },
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: get_fun get: get_fun
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true); verifyEqualTo(arr, "0", get_fun());
}
runTestCase(testcase); verifyNotEnumerable(arr, "0");
verifyConfigurable(arr, "0");

View File

@ -11,27 +11,24 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test setting the [[Get]] attribute 'desc' is accessor descriptor, test setting the [[Get]] attribute
value of 'P' as undefined (15.4.5.1 step 4.c) value of 'P' as undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: function () { get: function () {
return 12; return 12;
}, },
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: undefined get: undefined
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true); verifyNotEnumerable(arr, "0");
}
runTestCase(testcase); verifyConfigurable(arr, "0");

View File

@ -11,29 +11,28 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Get]] attribute 'desc' is accessor descriptor, test updating the [[Get]] attribute
value of 'P' from undefined to function (15.4.5.1 step 4.c) value of 'P' from undefined to function (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function get_fun() { function get_fun() {
return 36; return 36;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: undefined, get: undefined,
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
get: get_fun get: get_fun
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, undefined, undefined, false, true); verifyEqualTo(arr, "0", get_fun());
}
runTestCase(testcase); verifyNotEnumerable(arr, "0");
verifyConfigurable(arr, "0");

View File

@ -11,33 +11,29 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Set]] attribute 'desc' is accessor descriptor, test updating the [[Set]] attribute
value of 'P' with different getter function (15.4.5.1 step 4.c) value of 'P' with different getter function (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: function () { }, set: function () { },
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
set: set_fun set: set_fun
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true); verifyWritable(arr, "0", "setVerifyHelpProp");
} catch (ex) {
return false; verifyNotEnumerable(arr, "0");
}
} verifyConfigurable(arr, "0");
runTestCase(testcase);

View File

@ -11,25 +11,22 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test setting the [[Set]] attribute 'desc' is accessor descriptor, test setting the [[Set]] attribute
value of 'P' as undefined (15.4.5.1 step 4.c) value of 'P' as undefined (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: function () { }, set: function () { },
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"0": { "0": {
set: undefined set: undefined
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, undefined, undefined, false, true); verifyNotEnumerable(arr, "0");
}
runTestCase(testcase); verifyConfigurable(arr, "0");

View File

@ -11,32 +11,27 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Set]] attribute 'desc' is accessor descriptor, test updating the [[Set]] attribute
value of 'P' from undefined to function (15.4.5.1 step 4.c) value of 'P' from undefined to function (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: undefined, set: undefined,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
set: set_fun set: set_fun
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true); verifyWritable(arr, "0", "setVerifyHelpProp");
} catch (ex) {
return false; verifyNotEnumerable(arr, "0");
}
} verifyConfigurable(arr, "0");
runTestCase(testcase);

View File

@ -11,33 +11,28 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Enumerable]] 'desc' is accessor descriptor, test updating the [[Enumerable]]
attribute value of 'P' (15.4.5.1 step 4.c) attribute value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: set_fun, set: set_fun,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
enumerable: false enumerable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, true); verifyWritable(arr, "0", "setVerifyHelpProp");
} catch (ex) {
return false; verifyNotEnumerable(arr, "0");
}
} verifyConfigurable(arr, "0");
runTestCase(testcase);

View File

@ -11,32 +11,28 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating the [[Configurable]] 'desc' is accessor descriptor, test updating the [[Configurable]]
attribute value of 'P' (15.4.5.1 step 4.c) attribute value of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
set: set_fun, set: set_fun,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
configurable: false configurable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "0", "setVerifyHelpProp");
} catch (ex) {
return false; verifyNotEnumerable(arr, "0");
}
} verifyNotConfigurable(arr, "0");
runTestCase(testcase);

View File

@ -11,41 +11,38 @@ description: >
named property that already exists on 'O' is accessor property and named property that already exists on 'O' is accessor property and
'desc' is accessor descriptor, test updating multiple attribute 'desc' is accessor descriptor, test updating multiple attribute
values of 'P' (15.4.5.1 step 4.c) values of 'P' (15.4.5.1 step 4.c)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function get_fun() { function get_fun() {
return 36; return 36;
} }
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "0", { Object.defineProperty(arr, "0", {
get: function () { get: function () {
return 12; return 12;
}, },
set: set_fun, set: set_fun,
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
try { Object.defineProperties(arr, {
Object.defineProperties(arr, {
"0": { "0": {
get: get_fun, get: get_fun,
enumerable: false, enumerable: false,
configurable: false configurable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "0", get_fun, set_fun, "setVerifyHelpProp", false, false); verifyEqualTo(arr, "0", get_fun());
} catch (ex) {
return false; verifyWritable(arr, "0", "setVerifyHelpProp");
}
} verifyNotEnumerable(arr, "0");
runTestCase(testcase);
verifyNotConfigurable(arr, "0");

View File

@ -11,23 +11,29 @@ description: >
that won't exist on 'O', and 'desc' is data descriptor, test 'P' that won't exist on 'O', and 'desc' is data descriptor, test 'P'
is defined in 'O' with all correct attribute values (15.4.5.1 step is defined in 'O' with all correct attribute values (15.4.5.1 step
5) 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
value: 12, value: 12,
writable: true, writable: true,
enumerable: true, enumerable: true,
configurable: true configurable: true
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "property", 12, true, true, true) && arr.length === 0; verifyEqualTo(arr, "property", 12);
}
runTestCase(testcase); verifyWritable(arr, "property");
verifyEnumerable(arr, "property");
verifyConfigurable(arr, "property");
if (arr.length !== 0) {
$ERROR('Expected arr.length === 0, actually ' + arr.length);
}

View File

@ -10,31 +10,36 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is generic Object.defineProperties - 'O' is an Array, 'P' is generic
property, and 'desc' is accessor descriptor, test 'P' is defined property, and 'desc' is accessor descriptor, test 'P' is defined
in 'O' with all correct attribute values (15.4.5.1 step 5) in 'O' with all correct attribute values (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function get_fun() { function get_fun() {
return 12; return 12;
} }
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
get: get_fun, get: get_fun,
set: set_fun, set: set_fun,
enumerable: true, enumerable: true,
configurable: true configurable: true
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "setVerifyHelpProp", true, true) && verifyEqualTo(arr, "property", get_fun());
arr.length === 0;
} verifyWritable(arr, "property", "setVerifyHelpProp");
runTestCase(testcase);
verifyEnumerable(arr, "property");
verifyConfigurable(arr, "property");
if (arr.length !== 0) {
$ERROR('Expected arr.length === 0, actually ' + arr.length);
}

View File

@ -10,34 +10,35 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is generic own Object.defineProperties - 'O' is an Array, 'P' is generic own
accessor property of 'O', and 'desc' is accessor descriptor, test accessor property of 'O', and 'desc' is accessor descriptor, test
updating multiple attribute values of 'P' (15.4.5.1 step 5) updating multiple attribute values of 'P' (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = []; function get_fun() {
function get_fun() {
return 12; return 12;
} }
function set_fun(value) { function set_fun(value) {
arr.verifySetFun = value; arr.verifySetFun = value;
} }
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
get: function () { get: function () {
return 36; return 36;
}, },
enumerable: true, enumerable: true,
configurable: true configurable: true
}); });
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
get: get_fun, get: get_fun,
set: set_fun, set: set_fun,
enumerable: false enumerable: false
} }
}); });
return accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, true); verifyEqualTo(arr, "property", get_fun());
}
runTestCase(testcase); verifyWritable(arr, "property", "verifySetFun");
verifyNotEnumerable(arr, "property");
verifyConfigurable(arr, "property");

View File

@ -10,23 +10,29 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is generic own data Object.defineProperties - 'O' is an Array, 'P' is generic own data
property of 'O', and 'desc' is data descriptor, test updating property of 'O', and 'desc' is data descriptor, test updating
multiple attribute values of 'P' (15.4.5.1 step 5) multiple attribute values of 'P' (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true arr.property = 12; // default value of attributes: writable: true, configurable: true, enumerable: true
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
writable: false, writable: false,
enumerable: false, enumerable: false,
configurable: false configurable: false
} }
}); });
return dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false) && arr.length === 0; verifyEqualTo(arr, "property", 12);
}
runTestCase(testcase); verifyNotWritable(arr, "property");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (arr.length !== 0) {
$ERROR('Expected arr.length === 0, actually ' + arr.length);
}

View File

@ -11,28 +11,34 @@ description: >
property of 'O', test TypeError is thrown when updating the property of 'O', test TypeError is thrown when updating the
[[Value]] attribute value of 'P' which is defined as unwritable [[Value]] attribute value of 'P' which is defined as unwritable
and non-configurable (15.4.5.1 step 5) and non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
value: 12 value: 12
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
value: 36 value: 36
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false); verifyEqualTo(arr, "property", 12);
verifyNotWritable(arr, "property");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,28 +11,34 @@ description: >
property of 'O', test TypeError is thrown when updating the property of 'O', test TypeError is thrown when updating the
[[Writable]] attribute value of 'P' which is defined as [[Writable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
writable: false writable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
writable: true writable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", undefined, false, false, false); verifyEqualTo(arr, "property", undefined);
verifyNotWritable(arr, "property");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,29 +11,35 @@ description: >
property of 'O', test TypeError is thrown when updating the property of 'O', test TypeError is thrown when updating the
[[Enumerable]] attribute value of 'P' which is defined as [[Enumerable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
value: 12, value: 12,
enumerable: false enumerable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
enumerable: true enumerable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false); verifyEqualTo(arr, "property", 12);
verifyNotWritable(arr, "property");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,28 +11,34 @@ description: >
property of 'O', test TypeError is thrown when updating the property of 'O', test TypeError is thrown when updating the
[[Configurable]] attribute value of 'P' which is defined as [[Configurable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
value: 12 value: 12
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && dataPropertyAttributesAreCorrect(arr, "property", 12, false, false, false); verifyEqualTo(arr, "property", 12);
verifyNotWritable(arr, "property");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,26 +11,23 @@ description: >
accessor property of 'O', test TypeError is thrown when updating accessor property of 'O', test TypeError is thrown when updating
the [[Get]] attribute value of 'P' which is defined as the [[Get]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() { var arr = [];
var arr = [];
function get_fun() { function get_fun() {
return 37; return 37;
} }
function set_fun(value) { function set_fun(value) {
arr.verifySetFun = value; arr.verifySetFun = value;
} }
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
get: get_fun, get: get_fun,
set: set_fun set: set_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
get: function () { get: function () {
@ -38,10 +35,18 @@ function testcase() {
} }
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && verifyEqualTo(arr, "property", get_fun());
accessorPropertyAttributesAreCorrect(arr, "property", get_fun, set_fun, "verifySetFun", false, false);
verifyWritable(arr, "property", "verifySetFun");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,31 +11,34 @@ description: >
accessor property of 'O', test TypeError is thrown when updating accessor property of 'O', test TypeError is thrown when updating
the [[Set]] attribute value of 'P' which is defined as the [[Set]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
set: set_fun set: set_fun
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
set: function () { } set: function () { }
} }
}); });
return false; } catch (e) {
} catch (ex) { verifyWritable(arr, "property", "setVerifyHelpProp");
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false);
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,32 +11,36 @@ description: >
accessor property of 'O', test TypeError is thrown when updating accessor property of 'O', test TypeError is thrown when updating
the [[Enumerable]] attribute value of 'P' which is defined as the [[Enumerable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
set: set_fun, set: set_fun,
enumerable: false enumerable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
enumerable: true enumerable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "property", "setVerifyHelpProp");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

View File

@ -11,32 +11,36 @@ description: >
accessor property of 'O', test TypeError is thrown when updating accessor property of 'O', test TypeError is thrown when updating
the [[Configurable]] attribute value of 'P' which is defined as the [[Configurable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5) non-configurable (15.4.5.1 step 5)
includes: includes: [propertyHelper.js]
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
---*/ ---*/
function testcase() {
var arr = []; var arr = [];
function set_fun(value) { function set_fun(value) {
arr.setVerifyHelpProp = value; arr.setVerifyHelpProp = value;
} }
Object.defineProperty(arr, "property", { Object.defineProperty(arr, "property", {
set: set_fun, set: set_fun,
configurable: false configurable: false
}); });
try { try {
Object.defineProperties(arr, { Object.defineProperties(arr, {
"property": { "property": {
configurable: true configurable: true
} }
}); });
return false; $ERROR("Expected an exception.");
} catch (ex) { } catch (e) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false); verifyWritable(arr, "property", "setVerifyHelpProp");
verifyNotEnumerable(arr, "property");
verifyNotConfigurable(arr, "property");
if (!(e instanceof TypeError)) {
$ERROR("Expected TypeError, got " + e);
} }
}
runTestCase(testcase); }

Some files were not shown because too many files have changed in this diff Show More