-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Require Node.js 12.20 and move to ESM
- Loading branch information
1 parent
728565e
commit 05f1972
Showing
7 changed files
with
70 additions
and
75 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,50 @@ | ||
import {serial as test} from 'ava'; | ||
import test from 'ava'; | ||
import delay from 'delay'; | ||
import inRange from 'in-range'; | ||
import timeSpan from 'time-span'; | ||
import pLocate from '.'; | ||
import pLocate from './index.js'; | ||
|
||
const input = [ | ||
[1, 300], | ||
[2, 400], | ||
[3, 200], | ||
Promise.resolve([4, 100]) // Ensures promises work in the input | ||
Promise.resolve([4, 100]), // Ensures promises work in the input | ||
]; | ||
|
||
const tester = async ([value, ms]) => { | ||
await delay(ms); | ||
return value === 2 || value === 3; | ||
}; | ||
|
||
test('main', async t => { | ||
test.serial('main', async t => { | ||
const end = timeSpan(); | ||
t.is((await pLocate(input, tester))[0], 2); | ||
t.true(inRange(end(), {start: 370, end: 450}), 'should be time of item `2`'); | ||
}); | ||
|
||
test('option {preserveOrder:false}', async t => { | ||
test.serial('option {preserveOrder:false}', async t => { | ||
const end = timeSpan(); | ||
t.is((await pLocate(input, tester, {preserveOrder: false}))[0], 3); | ||
t.true(inRange(end(), {start: 170, end: 250}), 'should be time of item `3`'); | ||
}); | ||
|
||
test('option {concurrency:1}', async t => { | ||
test.serial('option {concurrency:1}', async t => { | ||
const end = timeSpan(); | ||
t.is((await pLocate(input, tester, {concurrency: 1}))[0], 2); | ||
t.true(inRange(end(), {start: 670, end: 750}), 'should be time of items `1` and `2`, since they run serially'); | ||
}); | ||
|
||
test('returns `undefined` when nothing could be found', async t => { | ||
test.serial('returns `undefined` when nothing could be found', async t => { | ||
t.is((await pLocate([1, 2, 3], () => false)), undefined); | ||
}); | ||
|
||
test('rejected return value in `tester` rejects the promise', async t => { | ||
test.serial('rejected return value in `tester` rejects the promise', async t => { | ||
const fixtureError = new Error('fixture'); | ||
|
||
await t.throwsAsync( | ||
pLocate([1, 2, 3], () => Promise.reject(fixtureError)), | ||
fixtureError.message | ||
{ | ||
message: fixtureError.message, | ||
}, | ||
); | ||
}); |