spica
Version:
Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.
44 lines (38 loc) • 1.1 kB
text/typescript
import { Sequence } from '../../../sequence';
import { counter } from '../../../../counter';
describe('Unit: lib/monad/sequence/member/static/from', () => {
describe('Sequence.from', () => {
it('side effect', () => {
const s = Sequence.from(Sequence.random(counter())).take(5);
assert(s.extract().length === 5);
assert.notDeepStrictEqual(
s.extract(),
s.extract());
});
it('idempotence', () => {
assert.deepStrictEqual(
Sequence.from([0, 1])
.foldr((a, b) => Sequence.from([a].concat(b.extract()).concat(b.extract())), Sequence.from<number>([]))
.extract(),
[0, 1, 1]);
});
it('array', () => {
assert.deepStrictEqual(
Sequence.from([])
.extract(),
[]);
assert.deepStrictEqual(
Sequence.from([0])
.extract(),
[0]);
assert.deepStrictEqual(
Sequence.from([0, 1])
.extract(),
[0, 1]);
assert.deepStrictEqual(
Sequence.from([0, 1, 2])
.extract(),
[0, 1, 2]);
});
});
});