metaapi.cloud-sdk
Version:
SDK for MetaApi, a professional cloud forex API which includes MetaTrader REST API and MetaTrader websocket API. Supports both MetaTrader 5 (MT5) and MetaTrader 4 (MT4). CopyFactory copy trading API included. (https://metaapi.cloud)
83 lines (69 loc) • 2.13 kB
text/typescript
;
import * as helpers from './helpers';
import 'should';
describe('helpers library', () => {
/**
* @test {delay}
*/
describe('delay', () => {
/**
* @test {delay}
*/
it('should allow to cancel the delay', async () => {
let promise = helpers.delay(1000 * 60 * 60 * 24);
promise.canceled.should.be.false();
promise.cancel();
promise.canceled.should.be.true();
await promise;
});
});
/**
* @test {createHandlePromise}
*/
describe('createHandlePromise', () => {
/**
* @test {createHandlePromise}
*/
it('should timeout promise', async () => {
for (let i = 0; i < 10; ++i) {
let promise = helpers.createHandlePromise().timeout(1, 'test');
await helpers.delay(2);
await helpers.delay(2);
try {
await promise;
throw new Error('assert');
} catch (err) {
err.name.should.equal('TimeoutError');
}
}
});
});
/**
* @test {helpers#expBackoffDelay}
*/
describe('expBackoffDelay', () => {
/**
* @test {helpers#expBackoffDelay}
*/
it('should return exponential backoff delay with start time = 1', () => {
helpers.expBackoffDelay(0, 1, 20).should.equal(0);
helpers.expBackoffDelay(1, 1, 20).should.equal(1);
helpers.expBackoffDelay(2, 1, 20).should.equal(2);
helpers.expBackoffDelay(3, 1, 20).should.equal(4);
helpers.expBackoffDelay(4, 1, 20).should.equal(8);
helpers.expBackoffDelay(5, 1, 20).should.equal(16);
helpers.expBackoffDelay(6, 1, 20).should.equal(20);
});
/**
* @test {helpers#expBackoffDelay}
*/
it('should return exponential backoff delay with start time = 5', () => {
helpers.expBackoffDelay(0, 5, 45).should.equal(0);
helpers.expBackoffDelay(1, 5, 45).should.equal(5);
helpers.expBackoffDelay(2, 5, 45).should.equal(10);
helpers.expBackoffDelay(3, 5, 45).should.equal(20);
helpers.expBackoffDelay(4, 5, 45).should.equal(40);
helpers.expBackoffDelay(5, 5, 45).should.equal(45);
});
});
});