UNPKG

1.69 kBJavaScriptView Raw
1/* global it describe */
2const assert = require('assert');
3require('../concurrency');
4
5const e1 = new Error(1);
6const e2 = new Error(2);
7
8describe('Concurrency', function() {
9 describe('#Promise.any()', function() {
10 it('should return an array of value objects if there is no exception', async function() {
11 let res = await Promise.any([Promise.resolve(1), Promise.resolve(2)]);
12 assert.deepStrictEqual(res, [{ value: 1 }, { value: 2 }]);
13 });
14 it('should return an array of error objects if there no exception', async function() {
15 let res = await Promise.any([Promise.reject(e1), Promise.reject(e2)]);
16 assert.deepStrictEqual(res, [{ error: e1 }, { error: e2 }]);
17 });
18 it('should return an array mixed value and error objects', async function() {
19 let res = await Promise.any([Promise.resolve(1), Promise.reject(e2), Promise.resolve(3)]);
20 assert.deepStrictEqual(res, [{ value: 1 }, { error: e2 }, { value: 3 }]);
21 });
22 });
23 describe('#Promise.best()', function() {
24 it('should return the first result', async function() {
25 let res = await Promise.best([Promise.resolve(1), Promise.resolve(2)]);
26 assert.deepStrictEqual(res, 1);
27 });
28 it('should return the first good result', async function() {
29 let res = await Promise.best([Promise.reject(e1), Promise.resolve(2), Promise.resolve(3)]);
30 assert.deepStrictEqual(res, 2);
31 });
32 it('should return an exception with all error objects', async function() {
33 try {
34 await Promise.best([Promise.reject(e1), Promise.reject(e2)]);
35 assert.fail();
36 } catch (e) {
37 assert.deepStrictEqual(e, [e1, e2]);
38 }
39 });
40 });
41});