Curation for the jsc/es6 tests

This commit is contained in:
Leo Balter 2018-09-14 13:44:35 -04:00 committed by Rick Waldron
parent d544eacedf
commit 3c726256d1
551 changed files with 96 additions and 7368 deletions

View File

@ -0,0 +1,38 @@
- well-known_symbols_Symbol.toPrimitive.js
- Review coverage for Symbol.toPrimitive calls in many expressions. e.g. addition, subtractiong, comparison, etc
- WeakSet_iterator_closing.js
- Based in the tests at `built-ins/WeakSet/iterator-*`, add cases for verifying the correct get and call order for the iterator next/return/throw, etc
- the same is valid for WeakMap, Set, and Map
- Unicode_code_point_escapes_in_identifiers.js / Unicode_code_point_escapes_in_strings.js
- Needs coverage for cases using unicode code point escapes in:
- `language/identifiers`
- `language/reserved-words`
- `language/literals`
- `language/keywords`
- `language/directive-prologue`
- `language/white-space`
- arguments object?
- etc
- Symbol_JSON.stringify_ignores_symbols.js
- Cover Symbol values in JSON.stringify (`built-ins/JSON/stringify`)
- Set_-0_key_converts_to_+0.js
- `built-ins/Set/will-not-add-duplicate-entry-normalizes-zero.js`: reconsider verifying -0 normalization fetching the values from the Set.
- Similar to Map index? Needs to verify
- rest_parameters_new_Function_support.js
- Add coverage composing fns through `new Function` using rest operators in strings
- expand to other function constructors
- rest_parameters_cant_be_used_in_setters.js
- Couldn't find coverage for rest parameters disallowed in setters, needs double check
- Proxy_JSON.stringify_support.js
- Is it worth adding JSON.stringify behavior over Proxied objects?
- Proxy_internal_set_calls_Array.prototype.push.js / Proxy_internal_set_calls_*.js / Proxy_internal_get_calls_*.js
- It is interesting to verify Array/String/RegExp/etc methods calling internals being observed with exotic proxy objects.
- This is a coverage for each method, not Proxy.
- Rather than add these operations to each method, but most of the Array methods have malstructured legacy tests.
- It's recommended to review the coverage and recreate tests, adding cases where calls to internals are observed like in this example.
- prototype_of_bound_functions_arrow_functions.js
- Add coverage for bound special functions
- Add coverage for checking the prototypes...
- Add coverage for bound class methods (include static and private)
- Object_static_methods_accept_primitives_Object.freeze.js
- Needs Coverage Object static methods - e.g. `Object.freeze` - receiving non object values

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.copyWithin === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.entries === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.fill === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.find === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.findIndex === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.keys === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype.values === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Array.prototype[Symbol.iterator] === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,17 +0,0 @@
function test() {
var unscopables = Array.prototype[Symbol.unscopables];
if (!unscopables) {
return false;
}
var ns = "find,findIndex,fill,copyWithin,entries,keys,values".split(",");
for (var i = 0; i < ns.length; i++) {
if (Array.prototype[ns[i]] && !unscopables[ns[i]]) return false;
}
return true;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,19 +0,0 @@
function test() {
// Iterator instance
var iterator = [][Symbol.iterator]();
// %ArrayIteratorPrototype%
var proto1 = Object.getPrototypeOf(iterator);
// %IteratorPrototype%
var proto2 = Object.getPrototypeOf(proto1);
return proto2.hasOwnProperty(Symbol.iterator) &&
!proto1 .hasOwnProperty(Symbol.iterator) &&
!iterator .hasOwnProperty(Symbol.iterator) &&
iterator[Symbol.iterator]() === iterator;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
class C extends Array {}
return C.from({ length: 0 }) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
class C extends Array {}
return Array.isArray(new C());
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
class C extends Array {}
return C.of(0) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
return c.concat(1) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
return c.filter(Boolean) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
return c.map(Boolean) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,12 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
c.push(2,4,6);
return c.slice(1,2) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,12 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
c.push(2,4,6);
return c.splice(1,2) instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
return c instanceof C && c instanceof Array && Object.getPrototypeOf(C) === Array;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,14 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
var len1 = c.length;
c[2] = 'foo';
var len2 = c.length;
return len1 === 0 && len2 === 3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,13 +0,0 @@
function test() {
class C extends Array {}
var c = new C();
c[2] = 'foo';
c.length = 1;
return c.length === 1 && !(2 in c);
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return Array.from({ 0: "foo", 1: "bar", length: 2 }) + '' === "foo,bar";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var iterable = (function*(){ yield 1; yield 2; yield 3; }());
return Array.from(iterable) + '' === "1,2,3";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,30 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var iterable = global.__createIterableObject([1, 2, 3]);
return Array.from(iterable) + '' === "1,2,3";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,30 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var iterable = global.__createIterableObject([1, 2, 3]);
return Array.from(Object.create(iterable)) + '' === "1,2,3";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,36 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var closed = false;
var iter = global.__createIterableObject([1, 2, 3], {
'return': function(){ closed = true; return {}; }
});
try {
Array.from(iter, function() { throw 42 });
} catch(e){}
return closed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
return Array.from({ 0: "foo", 1: "bar", length: 2 }, function(e, i) {
return e + this.baz + i;
}, { baz: "d" }) + '' === "food0,bard1";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,12 +0,0 @@
function test() {
var iterable = (function*(){ yield "foo"; yield "bar"; yield "bal"; }());
return Array.from(iterable, function(e, i) {
return e + this.baz + i;
}, { baz: "d" }) + '' === "food0,bard1,bald2";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,32 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var iterable = global.__createIterableObject(["foo", "bar", "bal"]);
return Array.from(iterable, function(e, i) {
return e + this.baz + i;
}, { baz: "d" }) + '' === "food0,bard1,bald2";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,32 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var iterable = global.__createIterableObject(["foo", "bar", "bal"]);
return Array.from(Object.create(iterable), function(e, i) {
return e + this.baz + i;
}, { baz: "d" }) + '' === "food0,bard1,bald2";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
return typeof Array.of === 'function' &&
Array.of(2)[0] === 2;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var prop = Object.getOwnPropertyDescriptor(Array, Symbol.species);
return 'get' in prop && Array[Symbol.species] === Array;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Function {}
var c = new C("x", "return this.bar + x;");
return c.apply({bar:1}, [2]) === 3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Function {}
var c = new C("x", "y", "return this.bar + x + y;").bind({bar:1}, 2);
return c(6) === 9 && c instanceof C;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Function {}
var c = new C("x", "return this.bar + x;");
return c.call({bar:1}, 2) === 3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Function {}
var c = new C("return 'foo';");
return c() === 'foo';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,12 +0,0 @@
function test() {
class C extends Function {}
var c = new C("this.bar = 2;");
c.prototype.baz = 3;
return new c().bar === 2 && new c().baz === 3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
class C extends Function {}
var c = new C("return 'foo';");
return c instanceof C && c instanceof Function && Object.getPrototypeOf(C) === Function;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
--> A comment
<!-- Another comment
var a = 3; <!-- Another comment
return a === 3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.clear === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.delete === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.entries === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.forEach === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.keys === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var map = new Map();
return map.set(0, 0) === map;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,14 +0,0 @@
function test() {
var key = {};
var map = new Map();
map.set(key, 123);
return map.size === 1;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype.values === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Map.prototype[Symbol.iterator] === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species);
return 'get' in prop && Map[Symbol.species] === Map;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,19 +0,0 @@
function test() {
// Iterator instance
var iterator = new Map()[Symbol.iterator]();
// %MapIteratorPrototype%
var proto1 = Object.getPrototypeOf(iterator);
// %IteratorPrototype%
var proto2 = Object.getPrototypeOf(proto1);
return proto2.hasOwnProperty(Symbol.iterator) &&
!proto1 .hasOwnProperty(Symbol.iterator) &&
!iterator .hasOwnProperty(Symbol.iterator) &&
iterator[Symbol.iterator]() === iterator;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,14 +0,0 @@
function test() {
var key = {};
var map = new Map();
map.set(key, 123);
return map.has(key) && map.get(key) === 123;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
new Map(null);
return true;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,14 +0,0 @@
function test() {
var key1 = {};
var key2 = {};
var map = new Map([[key1, 123], [key2, 456]]);
return map.has(key1) && map.get(key1) === 123 &&
map.has(key2) && map.get(key2) === 456;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,19 +0,0 @@
function test() {
var passed = false;
var _set = Map.prototype.set;
Map.prototype.set = function(k, v) {
passed = true;
};
new Map([ [1, 2] ]);
Map.prototype.set = _set;
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,15 +0,0 @@
function test() {
new Map();
try {
Map();
return false;
} catch(e) {
return true;
}
}
if (!test())
throw new Error("Test failed");

View File

@ -1,36 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var closed = false;
var iter = global.__createIterableObject([1, 2, 3], {
'return': function(){ closed = true; return {}; }
});
try {
new Map(iter);
} catch(e){}
return closed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.acosh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.asinh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.atanh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.cbrt === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.clz32 === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.cosh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.expm1 === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.fround === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,12 +0,0 @@
function test() {
return Math.hypot() === 0 &&
Math.hypot(1) === 1 &&
Math.hypot(9, 12, 20) === 25 &&
Math.hypot(27, 36, 60, 100) === 125;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.imul === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.log10 === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.log1p === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.log2 === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.sign === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.sinh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.tanh === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Math.trunc === "function";
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.EPSILON === 'number';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.MAX_SAFE_INTEGER === 'number';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.MIN_SAFE_INTEGER === 'number';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.isFinite === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.isInteger === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.isNaN === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return typeof Number.isSafeInteger === 'function';
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
var o = Object.create(null), p = {};
o.__proto__ = p;
return Object.getPrototypeOf(o) !== p;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,16 +0,0 @@
function test() {
var desc = Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");
var A = function(){};
return (desc
&& "get" in desc
&& "set" in desc
&& desc.configurable
&& !desc.enumerable);
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var A = function(){};
return (new A()).__proto__ === A.prototype;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return Object.getOwnPropertyNames(Object.prototype).indexOf('__proto__') > -1;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return Object.prototype.hasOwnProperty('__proto__');
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
var o = {};
o.__proto__ = Array.prototype;
return o instanceof Array;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var o = Object.assign({a:true}, {b:true}, {c:true});
return "a" in o && "b" in o && "c" in o;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,17 +0,0 @@
function test() {
var o = {};
var sym = Symbol(), sym2 = Symbol(), sym3 = Symbol();
o[sym] = true;
o[sym2] = true;
o[sym3] = true;
var result = Object.getOwnPropertySymbols(o);
return result[0] === sym
&& result[1] === sym2
&& result[2] === sym3;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,11 +0,0 @@
function test() {
return typeof Object.is === 'function' &&
Object.is(NaN, NaN) &&
!Object.is(-0, 0);
}
if (!test())
throw new Error("Test failed");

View File

@ -1,9 +0,0 @@
function test() {
return Object.setPrototypeOf({}, Array.prototype) instanceof Array;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,29 +0,0 @@
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
var fulfills = Promise.all([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(resolve) { setTimeout(resolve,100,"bar"); }),
]);
var rejects = Promise.all([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
]);
var score = 0;
fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
rejects.catch(function(result) { score += (result === "qux"); check(); });
function check() {
if (score === 2) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,49 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
var fulfills = Promise.all(global.__createIterableObject([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(resolve) { setTimeout(resolve,100,"bar"); }),
]));
var rejects = Promise.all(global.__createIterableObject([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
]));
var score = 0;
fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
rejects.catch(function(result) { score += (result === "qux"); check(); });
function check() {
if (score === 2) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,29 +0,0 @@
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
var fulfills = Promise.race([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
]);
var rejects = Promise.race([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(resolve) { setTimeout(resolve,300,"qux"); }),
]);
var score = 0;
fulfills.then(function(result) { score += (result === "foo"); check(); });
rejects.catch(function(result) { score += (result === "baz"); check(); });
function check() {
if (score === 2) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,49 +0,0 @@
var global = this;
function __createIterableObject(arr, methods) {
methods = methods || {};
if (typeof Symbol !== 'function' || !Symbol.iterator) {
return {};
}
arr.length++;
var iterator = {
next: function() {
return { value: arr.shift(), done: arr.length <= 0 };
},
'return': methods['return'],
'throw': methods['throw']
};
var iterable = {};
iterable[Symbol.iterator] = function(){ return iterator; }
return iterable;
}
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
var fulfills = Promise.race(global.__createIterableObject([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
]));
var rejects = Promise.race(global.__createIterableObject([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(resolve) { setTimeout(resolve,300,"qux"); }),
]));
var score = 0;
fulfills.then(function(result) { score += (result === "foo"); check(); });
rejects.catch(function(result) { score += (result === "baz"); check(); });
function check() {
if (score === 2) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,10 +0,0 @@
function test() {
var prop = Object.getOwnPropertyDescriptor(Promise, Symbol.species);
return 'get' in prop && Promise[Symbol.species] === Promise;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,36 +0,0 @@
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
var p1 = new Promise(function(resolve, reject) { resolve("foo"); });
var p2 = new Promise(function(resolve, reject) { reject("quux"); });
var score = 0;
function thenFn(result) { score += (result === "foo"); check(); }
function catchFn(result) { score += (result === "quux"); check(); }
function shouldNotRun(result) { score = -Infinity; }
p1.then(thenFn, shouldNotRun);
p2.then(shouldNotRun, catchFn);
p1.catch(shouldNotRun);
p2.catch(catchFn);
p1.then(function() {
// Promise.prototype.then() should return a new Promise
score += p1.then() !== p1;
check();
});
function check() {
if (score === 4) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,15 +0,0 @@
function test() {
new Promise(function(){});
try {
Promise(function(){});
return false;
} catch(e) {
return true;
}
}
if (!test())
throw new Error("Test failed");

View File

@ -1,30 +0,0 @@
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
class P extends Promise {}
var fulfills = P.all([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(resolve) { setTimeout(resolve,100,"bar"); }),
]);
var rejects = P.all([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(_, reject) { setTimeout(reject, 100,"qux"); }),
]);
var score = +(fulfills instanceof P);
fulfills.then(function(result) { score += (result + "" === "foo,bar"); check(); });
rejects.catch(function(result) { score += (result === "qux"); check(); });
function check() {
if (score === 3) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

View File

@ -1,30 +0,0 @@
function test() {
var passed = false;
function asyncTestPassed() {
passed = true;
}
class P extends Promise {}
var fulfills = P.race([
new Promise(function(resolve) { setTimeout(resolve,200,"foo"); }),
new Promise(function(_, reject) { setTimeout(reject, 300,"bar"); }),
]);
var rejects = P.race([
new Promise(function(_, reject) { setTimeout(reject, 200,"baz"); }),
new Promise(function(resolve) { setTimeout(resolve,300,"qux"); }),
]);
var score = +(fulfills instanceof P);
fulfills.then(function(result) { score += (result === "foo"); check(); });
rejects.catch(function(result) { score += (result === "baz"); check(); });
function check() {
if (score === 3) asyncTestPassed();
}
drainMicrotasks();
return passed;
}
if (!test())
throw new Error("Test failed");

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