Add reduce iterables utility

This commit is contained in:
Evan Hahn 2021-06-28 16:46:33 -05:00 committed by GitHub
parent 7cf7b1fca5
commit 4495a1ac67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 2 deletions

View file

@ -11,6 +11,7 @@ import {
groupBy,
isIterable,
map,
reduce,
size,
take,
} from '../../util/iterables';
@ -311,6 +312,23 @@ describe('iterable utilities', () => {
});
});
describe('reduce', () => {
it('returns the accumulator when passed an empty iterable', () => {
const fn = sinon.fake();
assert.strictEqual(reduce([], fn, 123), 123);
sinon.assert.notCalled(fn);
});
it('iterates over the iterable, ultimately returning a result', () => {
assert.strictEqual(
reduce(new Set([1, 2, 3, 4]), (result, n) => result + n, 89),
99
);
});
});
describe('take', () => {
it('returns the first n elements from an iterable', () => {
const everyNumber = {