Add context tests

This commit is contained in:
chicoxyzzy 2019-11-27 16:36:09 +03:00 committed by Rick Waldron
parent 715964b16b
commit aca10842a2
4 changed files with 114 additions and 0 deletions

View File

@ -0,0 +1,24 @@
// Copyright (C) 2019 Sergey Rubanov. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: >
Promise.any invoked on a constructor value that throws an error
esid: sec-promise.any
info: |
2. Let promiseCapability be ? NewPromiseCapability(C).
NewPromiseCapability
...
7. Let promise be ? Construct(C, « executor »).
features: [Promise.any]
---*/
var CustomPromise = function() {
throw new Test262Error();
};
assert.throws(Test262Error, function() {
Promise.any.call(CustomPromise);
});

View File

@ -0,0 +1,34 @@
// Copyright (C) 2019 Sergey Rubanov. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: >
Promise.any invoked on a constructor value
esid: sec-promise.any
info: |
2. Let promiseCapability be ? NewPromiseCapability(C).
...
5. Let result be PerformPromiseany(iteratorRecord, C, promiseCapability).
...
7. Return Completion(result).
features: [Promise.any, class]
---*/
var executor = null;
var callCount = 0;
class SubPromise extends Promise {
constructor(a) {
super(a);
executor = a;
callCount += 1;
}
}
var instance = Promise.any.call(SubPromise, []);
assert.sameValue(instance.constructor, SubPromise);
assert.sameValue(instance instanceof SubPromise, true);
assert.sameValue(callCount, 1);
assert.sameValue(typeof executor, 'function');

View File

@ -0,0 +1,20 @@
// Copyright (C) 2019 Sergey Rubanov. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: >
Promise.any invoked on a non-constructor value
esid: sec-promise.any
info: |
...
2. Let promiseCapability be ? NewPromiseCapability(C).
NewPromiseCapability ( C )
1. If IsConstructor(C) is false, throw a TypeError exception.
features: [Promise.any]
---*/
assert.throws(TypeError, function() {
Promise.any.call(eval);
});

View File

@ -0,0 +1,36 @@
// Copyright (C) 2019 Sergey Rubanov. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: >
Promise.any invoked on a non-object value
esid: sec-promise.any
info: |
1. Let C be the this value.
2. If Type(C) is not Object, throw a TypeError exception.
features: [Promise.any, Symbol]
---*/
assert.throws(TypeError, function() {
Promise.any.call(undefined, []);
});
assert.throws(TypeError, function() {
Promise.any.call(null, []);
});
assert.throws(TypeError, function() {
Promise.any.call(86, []);
});
assert.throws(TypeError, function() {
Promise.any.call('string', []);
});
assert.throws(TypeError, function() {
Promise.any.call(true, []);
});
assert.throws(TypeError, function() {
Promise.any.call(Symbol(), []);
});