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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -9,13 +9,9 @@ es5id: 15.2.3.7-6-a-110
description: >
Object.defineProperties - all own properties (data property and
accessor property)
includes:
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = {};
@ -42,7 +38,18 @@ function testcase() {
};
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
property of 'O', the [[Value]] field of 'desc' is absent, test
every field in 'desc' is absent (15.4.5.1 step 3.a.i)
includes: [runTestCase.js]
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperties(arr, { length: {} });
var verifyValue = false;
verifyValue = (arr.length === 0);
if (arr.length !== 0) {
$ERROR("Expected arr.length to be 0, actually " + arr.length);
}
var verifyWritable = false;
arr.length = 2;
verifyWritable = (arr.length === 2);
var verifyEnumerable = false;
for (var p in arr) {
if (p === "length") {
verifyEnumerable = true;
}
}
verifyEqualTo(arr, "length", 2);
var verifyConfigurable = false;
delete arr.length;
verifyConfigurable = arr.hasOwnProperty("length");
verifyWritable(arr, "length", "length", 5);
return verifyValue && verifyWritable && !verifyEnumerable && verifyConfigurable;
}
runTestCase(testcase);
verifyNotEnumerable(arr, "length");
verifyNotConfigurable(arr, "length");

View File

@ -10,12 +10,9 @@ description: >
Object.defineProperties - 'O' is a Function object which
implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var fun = function () { };
Object.defineProperty(fun, "prop", {
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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
updating the [[Writable]] attribute of the length property from
true to false (15.4.5.1 step 3.a.i)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
try {
Object.defineProperties(arr, {
length: { writable: false }
});
return dataPropertyAttributesAreCorrect(arr, "length", 0, false, false, false);
} catch (e) {
return false;
}
}
runTestCase(testcase);
verifyEqualTo(arr, "length", 0);
verifyNotWritable(arr, "length");
verifyNotEnumerable(arr, "length");
verifyNotConfigurable(arr, "length");

View File

@ -9,12 +9,9 @@ es5id: 15.2.3.7-6-a-13
description: >
Object.defineProperties - 'O' is an Array object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "prop", {
@ -29,9 +26,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +9,9 @@ es5id: 15.2.3.7-6-a-14
description: >
Object.defineProperties - 'O' is a String object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var str = new String();
Object.defineProperty(str, "prop", {
@ -29,9 +26,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +9,9 @@ es5id: 15.2.3.7-6-a-15
description: >
Object.defineProperties - 'O' is a Boolean object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = new Boolean(false);
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +9,9 @@ es5id: 15.2.3.7-6-a-16
description: >
Object.defineProperties - 'O' is a Number object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = new Number(-9);
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +9,9 @@ es5id: 15.2.3.7-6-a-18
description: >
Object.defineProperties - 'O' is a Date object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = new Date();
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +9,9 @@ es5id: 15.2.3.7-6-a-19
description: >
Object.defineProperties - 'O' is a RegExp object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = new RegExp();
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +11,9 @@ description: >
named property, 'P' property doesn't exist in 'O', test 'P' is
defined as data property when 'desc' is generic descriptor
(15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperties(arr, {
@ -25,6 +22,10 @@ function testcase() {
}
});
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, true, false);
}
runTestCase(testcase);
verifyEqualTo(arr, "0", undefined);
verifyNotWritable(arr, "0");
verifyEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

@ -9,12 +9,9 @@ es5id: 15.2.3.7-6-a-2
description: >
Object.defineProperties - 'P' is inherited data property (8.12.9
step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var proto = {};
Object.defineProperty(proto, "prop", {
value: 11,
@ -32,7 +29,11 @@ function testcase() {
}
});
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,12 +10,9 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'desc' is data descriptor, test updating all
attribute values of 'P' (15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [1]; // default value of attributes: writable: true, configurable: true, enumerable: true
Object.defineProperties(arr, {
@ -27,6 +24,11 @@ function testcase() {
}
});
return dataPropertyAttributesAreCorrect(arr, "0", 1001, false, false, false);
}
runTestCase(testcase);
verifyEqualTo(arr, "0", 1001);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

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

View File

@ -10,12 +10,9 @@ description: >
Object.defineProperties - 'O' is an Array, 'P' is an array index
named property, 'desc' is accessor descriptor, test updating all
attribute values of 'P' (15.4.5.1 step 4.c)
includes:
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperties(arr, {
@ -44,6 +41,10 @@ function testcase() {
}
});
return accessorPropertyAttributesAreCorrect(arr, "0", getFun, setFun, "setVerifyHelpProp", false, false);
}
runTestCase(testcase);
verifyEqualTo(arr, "0", getFun());
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
named property, 'P' makes no change if every field in 'desc' is
absent (name is data property) (15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
arr[0] = 101; // default value of attributes: writable: true, configurable: true, enumerable: true
try {
Object.defineProperties(arr, {
"0": {}
});
return dataPropertyAttributesAreCorrect(arr, "0", 101, true, true, true);
} catch (e) {
return false;
}
}
runTestCase(testcase);
verifyEqualTo(arr, "0", 101);
verifyWritable(arr, "0");
verifyEnumerable(arr, "0");
verifyConfigurable(arr, "0");

View File

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

View File

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

View File

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

View File

@ -9,12 +9,9 @@ es5id: 15.2.3.7-6-a-21
description: >
Object.defineProperties - 'O' is an Error object which implements
its own [[GetOwnProperty]] method to get 'P' (8.12.9 step 1 )
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var obj = new Error();
@ -30,9 +27,18 @@ function testcase() {
configurable: true
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +11,9 @@ description: >
index property, both the [[Value]] field of 'desc' and the
[[Value]] attribute value of 'name' are undefined (15.4.5.1 step
4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "0", {
@ -28,6 +25,10 @@ function testcase() {
value: undefined
}
});
return dataPropertyAttributesAreCorrect(arr, "0", undefined, false, false, false);
}
runTestCase(testcase);
verifyEqualTo(arr, "0", undefined);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

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

View File

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

View File

@ -10,12 +10,9 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array
index property, the [[Value]] field of 'desc' is +0, and the
[[Value]] attribute value of 'name' is -0 (15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "0", {
@ -28,9 +25,18 @@ function testcase() {
value: +0
}
});
return false;
$ERROR("Expected an exception.");
} 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,12 +10,9 @@ description: >
Object.defineProperties - 'O' is an Array, 'name' is an array
index property, the [[Value]] field of 'desc' is -0, and the
[[Value]] attribute value of 'name' is +0 (15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "0", {
@ -28,9 +25,18 @@ function testcase() {
value: -0
}
});
return false;
$ERROR("Expected an exception.");
} 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]]
attribute value of 'name' are two numbers with same vaule
(15.4.5.1 step 4.c)
includes:
- runTestCase.js
- dataPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
Object.defineProperty(arr, "0", {
value: 101
});
try {
Object.defineProperties(arr, {
"0": {
value: 101
}
});
return dataPropertyAttributesAreCorrect(arr, "0", 101, false, false, false);
} catch (e) {
return false;
}
}
runTestCase(testcase);
verifyEqualTo(arr, "0", 101);
verifyNotWritable(arr, "0");
verifyNotEnumerable(arr, "0");
verifyNotConfigurable(arr, "0");

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,12 +11,9 @@ description: >
accessor property of 'O', test TypeError is thrown when updating
the [[Configurable]] attribute value of 'P' which is defined as
non-configurable (15.4.5.1 step 5)
includes:
- runTestCase.js
- accessorPropertyAttributesAreCorrect.js
includes: [propertyHelper.js]
---*/
function testcase() {
var arr = [];
@ -34,9 +31,16 @@ function testcase() {
configurable: true
}
});
return false;
} catch (ex) {
return (ex instanceof TypeError) && accessorPropertyAttributesAreCorrect(arr, "property", undefined, set_fun, "setVerifyHelpProp", false, false);
$ERROR("Expected an exception.");
} catch (e) {
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