spica
Version:
Supervisor, Coroutine, Channel, select, AtomicPromise, Cancellation, Cache, List, Queue, Stack, and some utils.
67 lines (53 loc) • 1.26 kB
text/typescript
import { duff, duffbk, duffEach, duffReduce } from './duff';
describe('Unit: lib/duff', () => {
describe('duff', () => {
it('', () => {
var count = 100;
duff(count, i => {
assert(i + count-- === 100);
});
assert(count === 0);
var count = 100;
duff(-count, i => {
assert(i + - --count === 0);
});
assert(count === 0);
});
});
describe('duffbk', () => {
it('', () => {
var count = 100;
duffbk(count, i => {
assert(i + count-- === 100);
if (count === 50) {
return false;
}
});
assert(count === 50);
var count = 100;
duffbk(-count, i => {
assert(i + - --count === 0);
if (count === 50) {
return false;
}
});
assert(count === 50);
});
});
describe('duffEach', () => {
it('', () => {
duffEach(Array.from(Array(100), (_, i) => i), (v, i) => {
assert(v === i);
});
});
});
describe('duffReduce', () => {
it('', () => {
assert(100 === duffReduce(Array.from(Array(100), (_, i) => i), (acc, v, i) => {
assert(v === i);
assert(acc++ === i);
return acc;
}, 0));
});
});
});