spica
Version:
Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.
55 lines (48 loc) • 1.32 kB
text/typescript
import { Sequence } from '../../../sequence';
import { counter } from '../../../../counter';
describe('Unit: lib/monad/sequence/member/static/random', () => {
describe('Sequence.random', () => {
it('validate', () => {
assert.deepStrictEqual(
Sequence.random(counter())
.take(5)
.subsequences()
.filter(ns => ns.length === 2)
.extract()
.reduce((cnt, [n, m]) => n !== m ? ++cnt : cnt, 0),
10);
assert.notDeepStrictEqual(
Sequence.random()
.take(9)
.extract(),
Sequence.random()
.take(9)
.extract());
});
it('number', () => {
assert.deepStrictEqual(
Sequence.random()
.take(9)
.map(n => n >= 0 && n < 1)
.extract(),
[true, true, true, true, true, true, true, true, true]);
});
it('array', () => {
assert.deepStrictEqual(
Sequence.random([0, 1, 2])
.take(9)
.map(n => {
switch (n) {
case 0:
case 1:
case 2:
return true;
default:
return false;
}
})
.extract(),
[true, true, true, true, true, true, true, true, true]);
});
});
});