51 lines
1 KiB
TypeScript
51 lines
1 KiB
TypeScript
import test from 'ava'
|
|
|
|
import { Fib } from '../index'
|
|
|
|
test('should be able to stop a generator', (t) => {
|
|
const fib = new Fib()
|
|
const gen = fib[Symbol.iterator]
|
|
t.is(typeof gen, 'function')
|
|
const iterator = gen()
|
|
t.deepEqual(iterator.next(), {
|
|
done: false,
|
|
value: 1,
|
|
})
|
|
iterator.next()
|
|
iterator.next()
|
|
iterator.next()
|
|
iterator.next()
|
|
t.deepEqual(iterator.next(), {
|
|
done: false,
|
|
value: 8,
|
|
})
|
|
t.deepEqual(iterator.return?.(), {
|
|
done: true,
|
|
})
|
|
t.deepEqual(iterator.next(), {
|
|
done: true,
|
|
})
|
|
})
|
|
|
|
test('should be able to throw to generator', (t) => {
|
|
const fib = new Fib()
|
|
const gen = fib[Symbol.iterator]
|
|
t.is(typeof gen, 'function')
|
|
const iterator = gen()
|
|
t.deepEqual(iterator.next(), {
|
|
done: false,
|
|
value: 1,
|
|
})
|
|
iterator.next()
|
|
iterator.next()
|
|
iterator.next()
|
|
iterator.next()
|
|
t.deepEqual(iterator.next(), {
|
|
done: false,
|
|
value: 8,
|
|
})
|
|
t.throws(() => iterator.throw!(new Error()))
|
|
t.deepEqual(iterator.next(), {
|
|
done: true,
|
|
})
|
|
})
|