@stoqey/ib
Version:
Interactive Brokers TWS/IB Gateway API client library for Node.js (TS)
162 lines • 7.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* This file implements tests for the [[IBApiNext.getMarketDepthExchanges]] function.
*/
const __1 = require("../../..");
describe("RxJS Wrapper: getMarketDepthL2()", () => {
test("Insert rows", (done) => {
// create IBApiNext
const apiNext = new __1.IBApiNext();
const api = apiNext.api;
let eventCount = 0;
apiNext
.getMarketDepth({}, 100, false)
// eslint-disable-next-line rxjs/no-ignored-subscription
.subscribe({
next: (update) => {
switch (eventCount) {
case 0:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
break;
case 1:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
expect(update.all.bids.size).toEqual(1);
expect(update.all.bids.get(0).price).toEqual(11);
expect(update.all.bids.get(0).size).toEqual(12);
break;
case 2:
expect(update.all.asks.size).toEqual(2);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
expect(update.all.asks.get(1).price).toEqual(21);
expect(update.all.asks.get(1).size).toEqual(22);
expect(update.all.bids.size).toEqual(1);
expect(update.all.bids.get(0).price).toEqual(11);
expect(update.all.bids.get(0).size).toEqual(12);
break;
case 3:
expect(update.all.asks.size).toEqual(2);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
expect(update.all.asks.get(1).price).toEqual(21);
expect(update.all.asks.get(1).size).toEqual(22);
expect(update.all.bids.size).toEqual(2);
expect(update.all.bids.get(0).price).toEqual(11);
expect(update.all.bids.get(0).size).toEqual(12);
expect(update.all.bids.get(1).price).toEqual(31);
expect(update.all.bids.get(1).size).toEqual(32);
done();
break;
default:
fail();
}
},
error: (error) => {
fail(error.error.message);
},
});
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 0 /* insert */, 0 /* ask */, 1 /* price */, 2 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 0 /* insert */, 1 /* bid */, 11 /* price */, 12 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 1 /* position */, 0 /* insert */, 0 /* ask */, 21 /* price */, 22 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 1 /* position */, 0 /* insert */, 1 /* bid */, 31 /* price */, 32 /* size */);
eventCount++;
});
test("Update rows", (done) => {
// create IBApiNext
const apiNext = new __1.IBApiNext();
const api = apiNext.api;
let eventCount = 0;
apiNext
.getMarketDepth({}, 100, false)
// eslint-disable-next-line rxjs/no-ignored-subscription
.subscribe({
next: (update) => {
switch (eventCount) {
case 0:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
break;
case 1:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(11);
expect(update.all.asks.get(0).size).toEqual(12);
break;
case 2:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(11);
expect(update.all.asks.get(0).size).toEqual(12);
expect(update.all.bids.size).toEqual(1);
expect(update.all.bids.get(0).price).toEqual(1);
expect(update.all.bids.get(0).size).toEqual(2);
break;
case 3:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(11);
expect(update.all.asks.get(0).size).toEqual(12);
expect(update.all.bids.size).toEqual(1);
expect(update.all.bids.get(0).price).toEqual(11);
expect(update.all.bids.get(0).size).toEqual(12);
done();
break;
default:
fail();
}
},
error: (error) => {
fail(error.error.message);
},
});
// TODO emit insert events
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 0 /* insert */, 0 /* ask */, 1 /* price */, 2 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 1 /* update */, 0 /* ask */, 11 /* price */, 12 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 0 /* insert */, 1 /* bid */, 1 /* price */, 2 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 1 /* update */, 1 /* bid */, 11 /* price */, 12 /* size */);
eventCount++;
});
test("Delete rows", (done) => {
// create IBApiNext
const apiNext = new __1.IBApiNext();
const api = apiNext.api;
let eventCount = 0;
apiNext
.getMarketDepth({}, 100, false)
// eslint-disable-next-line rxjs/no-ignored-subscription
.subscribe({
next: (update) => {
switch (eventCount) {
case 0:
expect(update.all.asks.size).toEqual(1);
expect(update.all.asks.get(0).price).toEqual(1);
expect(update.all.asks.get(0).size).toEqual(2);
break;
case 1:
expect(update.all.asks.size).toEqual(0);
done();
break;
default:
fail();
}
},
error: (error) => {
fail(error.error.message);
},
});
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 0 /* insert */, 0 /* ask */, 1 /* price */, 2 /* size */);
eventCount++;
api.emit(__1.EventName.updateMktDepth, 1 /* ticker id */, 0 /* position */, 2 /* delete */, 0 /* ask */, 11 /* price */, 12 /* size */);
eventCount++;
});
});
//# sourceMappingURL=get-market-depth-l2.test.js.map