import { assert } from 'chai' import ExponentialBackoff from '../src/client/backoff' describe('ExponentialBackoff', function () { it('duration() return value starts with the min value', function () { // default: 100ms assert.equal(new ExponentialBackoff().duration(), 100) assert.equal(new ExponentialBackoff({ min: 100 }).duration(), 100) assert.equal(new ExponentialBackoff({ min: 123 }).duration(), 123) }) it('duration() return value increases when called multiple times', function () { const backoff = new ExponentialBackoff({ min: 100, max: 1000 }) assert.strictEqual(backoff.duration(), 100) assert.strictEqual(backoff.duration(), 200) assert.strictEqual(backoff.duration(), 400) assert.strictEqual(backoff.duration(), 800) }) it('duration() never returns greater than the max value', function () { const backoff = new ExponentialBackoff({ min: 300, max: 1000 }) assert.strictEqual(backoff.duration(), 300) assert.strictEqual(backoff.duration(), 600) assert.strictEqual(backoff.duration(), 1000) assert.strictEqual(backoff.duration(), 1000) }) it('reset() will reset the duration() value', function () { const backoff = new ExponentialBackoff({ min: 100, max: 1000 }) assert.strictEqual(backoff.duration(), 100) assert.strictEqual(backoff.duration(), 200) assert.strictEqual(backoff.duration(), 400) backoff.reset() assert.strictEqual(backoff.duration(), 100) assert.strictEqual(backoff.duration(), 200) }) })