mirror of https://github.com/tc39/test262.git
Merge pull request #236 from bocoup/test-assertions
Add Tests for Harness Helper Functions
This commit is contained in:
commit
c49e2bd6b9
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
`false` does not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert(false);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Two references to NaN do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.notSameValue(NaN, NaN);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Values that are not strictly equal satisfy the assertion.
|
||||
---*/
|
||||
|
||||
assert.notSameValue(undefined, null);
|
||||
assert.notSameValue(null, undefined);
|
||||
assert.notSameValue(0, 1);
|
||||
assert.notSameValue(1, 0);
|
||||
assert.notSameValue('', 's');
|
||||
assert.notSameValue('s', '');
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Distinct objects satisfy the assertion.
|
||||
---*/
|
||||
|
||||
assert.notSameValue({}, {});
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Positive and negative zero satisfy the assertion.
|
||||
---*/
|
||||
|
||||
assert.notSameValue(0, -0);
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
An object literal does not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert({});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Two references to NaN satisfy the assertion.
|
||||
---*/
|
||||
|
||||
assert.sameValue(NaN, NaN);
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Distinct objects do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.sameValue({}, {});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Values that are strictly equal satisfy the assertion.
|
||||
---*/
|
||||
var obj;
|
||||
|
||||
assert.sameValue(undefined, undefined);
|
||||
assert.sameValue(null, null);
|
||||
assert.sameValue(0, 0);
|
||||
assert.sameValue(1, 1);
|
||||
assert.sameValue('', '');
|
||||
assert.sameValue('s', 's');
|
||||
|
||||
obj = {};
|
||||
assert.sameValue(obj, obj);
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Positive and negative zero do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.sameValue(0, -0);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that throw instances of the specified constructor function
|
||||
satisfy the assertion.
|
||||
---*/
|
||||
|
||||
function MyError() {}
|
||||
|
||||
assert.throws(MyError, function() {
|
||||
throw new MyError();
|
||||
});
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that throw values whose constructor does not match the specified
|
||||
constructor do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws(Error, function() {
|
||||
throw new TypeError();
|
||||
});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that throw instances of the specified native Error constructor
|
||||
satisfy the assertion.
|
||||
---*/
|
||||
|
||||
assert.throws(Error, function() {
|
||||
throw new Error();
|
||||
});
|
||||
|
||||
assert.throws(EvalError, function() {
|
||||
throw new EvalError();
|
||||
});
|
||||
|
||||
assert.throws(RangeError, function() {
|
||||
throw new RangeError();
|
||||
});
|
||||
|
||||
assert.throws(ReferenceError, function() {
|
||||
throw new ReferenceError();
|
||||
});
|
||||
|
||||
assert.throws(SyntaxError, function() {
|
||||
throw new SyntaxError();
|
||||
});
|
||||
|
||||
assert.throws(TypeError, function() {
|
||||
throw new TypeError();
|
||||
});
|
||||
|
||||
assert.throws(URIError, function() {
|
||||
throw new URIError();
|
||||
});
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
The assertion fails when invoked without arguments.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws();
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that do not throw errors do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws(Error, function() {});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that throw the `null` value do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws(Error, function() {
|
||||
throw null;
|
||||
});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions that throw primitive values do not satisfy the assertion.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws(Error, function() {
|
||||
throw 3;
|
||||
});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
The assertion fails when invoked with a single argument.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
assert.throws(function() {});
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
`true` satisfies the assertion.
|
||||
---*/
|
||||
|
||||
assert(true);
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Arrays containing different elements are not equivalent.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
var first = [0, 'a', undefined];
|
||||
var second = [0, 'b', undefined];
|
||||
|
||||
if (compareArray(first, second) !== false) {
|
||||
$ERROR('Arrays containing different elements are not equivalent.');
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Arrays of differing lengths are not equivalent.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
if (compareArray([], [undefined]) !== false) {
|
||||
$ERROR('Arrays of differing lengths are not equivalent.');
|
||||
}
|
||||
|
||||
if (compareArray([undefined], []) !== false) {
|
||||
$ERROR('Arrays of differing lengths are not equivalent.');
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Empty arrays of are equivalent.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
if (compareArray([], []) !== true) {
|
||||
$ERROR('Empty arrays are equivalent.');
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Arrays containg the same elements in different order are not equivalent.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
var first = [0, 1, '', 's', null, undefined, obj];
|
||||
var second = [0, 1, '', 's', undefined, null, obj];
|
||||
|
||||
if (compareArray(first, second) !== false) {
|
||||
$ERROR('Arrays containing the same elements in different order are not equivalent.');
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Arrays containg the same elements in the same order are equivalent.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
var first = [0, 1, '', 's', undefined, null, obj];
|
||||
var second = [0, 1, '', 's', undefined, null, obj];
|
||||
|
||||
if (compareArray(first, second) !== true) {
|
||||
$ERROR('Arrays containing the same elements in the same order are equivalent.');
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Spares arrays are only equivalent if they have the same length.
|
||||
includes: [compareArray.js]
|
||||
---*/
|
||||
|
||||
if (compareArray([,], [,]) !== true) {
|
||||
$ERROR('Sparse arrays of the same length are equivalent.');
|
||||
}
|
||||
|
||||
if (compareArray([,], [,,]) !== false) {
|
||||
$ERROR('Sparse arrays of differing lengths are not equivalent.');
|
||||
}
|
||||
|
||||
if (compareArray([,,], [,]) !== false) {
|
||||
$ERROR('Sparse arrays of differing lengths are not equivalent.');
|
||||
}
|
||||
|
||||
if (compareArray([,], []) !== false) {
|
||||
$ERROR('Sparse arrays are not equivalent to empty arrays.');
|
||||
}
|
||||
|
||||
if (compareArray([], [,]) !== false) {
|
||||
$ERROR('Sparse arrays are not equivalent to empty arrays.');
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
The global `$ERROR` function throws an instance of the global `Test262`
|
||||
function with the specified message.
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
$ERROR('This is a test message');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
throw new Error(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
if (err.message !== 'This is a test message') {
|
||||
throw new Error('The error thrown did not define the specified message.');
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
throw new Error('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is configurable satisfy the assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: true
|
||||
});
|
||||
|
||||
verifyConfigurable(obj, 'a');
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not configurable do not satisfy the
|
||||
assertion outside of strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
verifyConfigurable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not configurable do not satisfy the
|
||||
assertion in strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
try {
|
||||
verifyConfigurable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is enumerable satisfy the assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
enumerable: true
|
||||
});
|
||||
|
||||
verifyEnumerable(obj, 'a');
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not enumerable do not satisfy the
|
||||
assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
enumerable: false
|
||||
});
|
||||
|
||||
try {
|
||||
verifyEnumerable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is configurable do not satisfy the
|
||||
assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
verifyNotConfigurable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not configurable satisfy the assertion
|
||||
outside of strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
verifyNotConfigurable(obj, 'a');
|
|
@ -0,0 +1,17 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not configurable satisfy the assertion
|
||||
in strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
configurable: false
|
||||
});
|
||||
|
||||
verifyNotConfigurable(obj, 'a');
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is enumerable do not satisfy the
|
||||
assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
enumerable: true
|
||||
});
|
||||
|
||||
try {
|
||||
verifyNotEnumerable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not enumerable satisfy the assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
enumerable: false
|
||||
});
|
||||
|
||||
verifyNotEnumerable(obj, 'a');
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not writable satisfy the assertion
|
||||
outside of strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: false,
|
||||
value: 123
|
||||
});
|
||||
|
||||
verifyNotWritable(obj, 'a');
|
||||
|
||||
if (obj.a !== 123) {
|
||||
$ERROR('`verifyNotWritable` should be non-destructive.');
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not writable satisfy the assertion in
|
||||
strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: false,
|
||||
value: 123
|
||||
});
|
||||
|
||||
verifyNotWritable(obj, 'a');
|
||||
|
||||
if (obj.a !== 123) {
|
||||
$ERROR('`verifyNotWritable` should be non-destructive.');
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is writable do not satisfy the assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true,
|
||||
value: 1
|
||||
});
|
||||
|
||||
try {
|
||||
verifyNotWritable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not writable do not satisfy the
|
||||
assertion outside of strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [noStrict]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: false
|
||||
});
|
||||
|
||||
try {
|
||||
verifyWritable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is not writable do not satisfy the
|
||||
assertion in strict mode.
|
||||
includes: [propertyHelper.js]
|
||||
flags: [onlyStrict]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: false
|
||||
});
|
||||
|
||||
try {
|
||||
verifyWritable(obj, 'a');
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects whose specified property is writable satisfy the assertion.
|
||||
includes: [propertyHelper.js]
|
||||
---*/
|
||||
|
||||
var obj = {};
|
||||
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true,
|
||||
value: 123
|
||||
});
|
||||
|
||||
verifyWritable(obj, 'a');
|
||||
|
||||
if (obj.a !== 123) {
|
||||
$ERROR('`verifyWritable` should be non-destructive.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that are expected to be functions but do not define the correct
|
||||
[[Class]] internal property do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
testBuiltInObject(null, true);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Functions whose `length` property does not match the expected value do not
|
||||
satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
testBuiltInObject(function(a, b) {}, true, false, [], 3);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Non-constructor functions that do not throw an when invoked via `new` do
|
||||
not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
testBuiltInObject(function() {}, true, false, [], 0);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Non-constructor functions that do not throw a TypeError when invoked via
|
||||
`new` do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var fn = function() {
|
||||
throw new Error();
|
||||
};
|
||||
|
||||
try {
|
||||
testBuiltInObject(fn, true, false, [], 0);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that are not extensible do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.preventExtensions(obj);
|
||||
|
||||
try {
|
||||
testBuiltInObject(obj);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that are not expected to be functions but do not define the correct
|
||||
[[Class]] internal property do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
testBuiltInObject(function() {}, false);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that do not define all of the specified "own" properties as
|
||||
non-enumerable do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'b', {
|
||||
writable: true, enumerable: true, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'c', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
testBuiltInObject(obj, false, false, ['a', 'b', 'c']);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that do not define all of the specified "own" properties do not
|
||||
satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'c', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
testBuiltInObject(obj, false, false, ['a', 'b', 'c']);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that do not define all of the specified "own" properties as
|
||||
configurable do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'b', {
|
||||
writable: true, enumerable: false, configurable: false
|
||||
});
|
||||
Object.defineProperty(obj, 'c', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
testBuiltInObject(obj, false, false, ['a', 'b', 'c']);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
Objects that do not define all of the specified "own" properties as
|
||||
writable do not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'a', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'b', {
|
||||
writable: false, enumerable: false, configurable: true
|
||||
});
|
||||
Object.defineProperty(obj, 'c', {
|
||||
writable: true, enumerable: false, configurable: true
|
||||
});
|
||||
|
||||
try {
|
||||
testBuiltInObject(obj, false, false, ['a', 'b', 'c']);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
||||
// This code is governed by the BSD license found in the LICENSE file.
|
||||
|
||||
/*---
|
||||
description: >
|
||||
`undefined` does not satisfy the assertion.
|
||||
includes: [testBuiltInObject.js]
|
||||
---*/
|
||||
|
||||
var threw = false;
|
||||
|
||||
try {
|
||||
testBuiltInObject(undefined);
|
||||
} catch(err) {
|
||||
threw = true;
|
||||
if (err.constructor !== Test262Error) {
|
||||
$ERROR(
|
||||
'Expected a Test262Error, but a "' + err.constructor.name +
|
||||
'" was thrown.'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (threw === false) {
|
||||
$ERROR('Expected a Test262Error, but no error was thrown.');
|
||||
}
|
Loading…
Reference in New Issue