@v4fire/core
Version:
V4Fire core library
51 lines (43 loc) • 1.17 kB
JavaScript
/*!
* V4Fire Core
* https://github.com/V4Fire/Core
*
* Released under the MIT license
* https://github.com/V4Fire/Core/blob/master/LICENSE
*/
import { intoIter } from 'core/iter';
import { sequence } from 'core/iter/combinators';
import { from, pick, andPick, assemble, streamArray } from 'core/json/stream';
describe('core/iter/combinators', () => {
describe('sequence', () => {
it('sequence of sync iterators', () => {
const seq = sequence([1, 2], new Set([3, 4]), [5, 6].values());
expect([...seq]).toEqual([1, 2, 3, 4, 5, 6]);
});
it('sequence of async iterators', async () => {
const tokens = intoIter(from(JSON.stringify({
total: 3,
data: [
{user: 'Bob', age: 21},
{user: 'Ben', age: 24},
{user: 'Rob', age: 28}
]
})));
const seq = sequence(
assemble(pick(tokens, 'total')),
streamArray(andPick(tokens, 'data'))
);
const
res = [];
for await (const val of seq) {
res.push(val);
}
expect(res).toEqual([
3,
{index: 0, value: {user: 'Bob', age: 21}},
{index: 1, value: {user: 'Ben', age: 24}},
{index: 2, value: {user: 'Rob', age: 28}}
]);
});
});
});