UNPKG

spica

Version:

Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.

25 lines (19 loc) 1.05 kB
import { Sequence } from '../../../sequence'; describe('Unit: lib/monad/sequence/member/iterate', () => { describe('iterate', () => { it('', () => { let thunk = new Sequence<number, number>((_ = 0, cons) => cons()).iterate(); assert.deepStrictEqual(thunk, [undefined, Sequence.Iterator.done, -1]); thunk = new Sequence<number, number>((n = 0, cons) => cons(n)).iterate(); assert.deepStrictEqual(thunk, [0, Sequence.Thunk.iterator(thunk), 0]); thunk = new Sequence<number, number>((n = 1, cons) => n < 4 ? cons(n, n * 2) : cons(n)).iterate(); assert.deepStrictEqual(thunk, [1, Sequence.Thunk.iterator(thunk), 0]); thunk = Sequence.Thunk.iterator(thunk)(); assert.deepStrictEqual(thunk, [2, Sequence.Thunk.iterator(thunk), 1]); thunk = Sequence.Thunk.iterator(thunk)(); assert.deepStrictEqual(thunk, [4, Sequence.Thunk.iterator(thunk), 2]); thunk = Sequence.Thunk.iterator(thunk)(); assert.deepStrictEqual(thunk, [undefined, Sequence.Iterator.done, -1]); }); }); });