1 |
|
2 | const assert = require('assert');
|
3 | const { full, best } = require('../concurrency');
|
4 |
|
5 | const e1 = new Error(1);
|
6 | const e2 = new Error(2);
|
7 |
|
8 | describe('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 full([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 full([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 full([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 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 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 best([Promise.reject(e1), Promise.reject(e2)]);
|
35 | assert.fail();
|
36 | } catch (e) {
|
37 | assert.deepStrictEqual(e, [e1, e2]);
|
38 | }
|
39 | });
|
40 | });
|
41 | });
|