Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/.name

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions .idea/runConfigurations.xml

This file was deleted.

2 changes: 1 addition & 1 deletion .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified out/production/Data-Integration/OrderBook/OrderBook.class
Binary file not shown.
Binary file added out/production/Data-Integration/classpath.index
Binary file not shown.
Binary file added out/test/Data-Integration/classpath.index
Binary file not shown.
Binary file modified out/test/Data-Integration/testOrderBook.class
Binary file not shown.
119 changes: 118 additions & 1 deletion src/test/testOrderBook.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ void placeMultipleOrders() {
assertEquals(2, testSubject.bids.size());
assertEquals(2, testSubject.asks.size());
assertEquals(0.3f, testSubject.bids.getFirst().price);
assertEquals(0.4f, testSubject.bestAskPrice);
assertEquals(0.35f, testSubject.bestAskPrice);
assertEquals(0.3f, testSubject.bestBidPrice);
assertEquals(12.9f, testSubject.sittingVolume);
}
Expand Down Expand Up @@ -235,4 +235,121 @@ void placeTwoAsk() {
assertEquals(-1f, testSubject.bestBidPrice);
assertEquals(1.8f, testSubject.sittingVolume);
}
@Test
void placeSimpleAsk(){
OrderBook obTest = new OrderBook();
assertEquals(0, obTest.asks.size());
assertEquals(0, obTest.bids.size());
assertEquals(-1f, obTest.bestAskPrice);
assertEquals(-1f, obTest.bestBidPrice);
assertEquals(0f, obTest.sittingVolume);

Order newAsk = new Order(5.1f, 7.2f, Side.ASK, 2347698784L);
obTest.placeOrder(newAsk);

assertEquals(1, obTest.asks.size());
assertEquals(0, obTest.bids.size());
assertEquals(5.1f, obTest.asks.getFirst().price);
assertEquals(7.2f, obTest.asks.getFirst().size);
assertEquals(2347698784L, obTest.asks.getFirst().createdTs);
assertEquals(5.1f, obTest.bestAskPrice);
assertEquals(-1f, obTest.bestBidPrice); // Should be unaffected
assertEquals(7.2f, obTest.sittingVolume);
}

@Test
void placeSimpleBid(){
OrderBook obTest = new OrderBook();
assertEquals(0, obTest.asks.size());
assertEquals(0, obTest.bids.size());
assertEquals(-1f, obTest.bestAskPrice);
assertEquals(-1f, obTest.bestBidPrice);
assertEquals(0f, obTest.sittingVolume);
// Operation
Order newBid = new Order(6.3f, 5.8f, Side.BID, 3277777780L);
obTest.placeOrder(newBid);
// Checking Operation
assertEquals(0, obTest.asks.size());
assertEquals(1, obTest.bids.size());
assertEquals(6.3f, obTest.bids.getFirst().price);
assertEquals(5.8f, obTest.bids.getFirst().size);
assertEquals(3277777780L, obTest.bids.getFirst().createdTs);
assertEquals(-1f, obTest.bestAskPrice); // Should be unaffected
assertEquals(6.3f, obTest.bestBidPrice);
assertEquals(5.8f, obTest.sittingVolume);
}

@Test
void multipleOrdersPlusFill(){
OrderBook obTest = new OrderBook();
assertEquals(0, obTest.asks.size());
assertEquals(0, obTest.bids.size());
assertEquals(-1f, obTest.bestAskPrice);
assertEquals(-1f, obTest.bestBidPrice);
assertEquals(0f, obTest.sittingVolume);

Order newBid1 = new Order("111","bid1", 2.5f, 10.0f, OrderType.MARKET_ORDER, true,
Side.BID, 3277777777L);
obTest.placeOrder(newBid1);

Order newBid2 = new Order("112","bid2", 7.5f, 90.0f, OrderType.MARKET_ORDER, true,
Side.BID, 3277779955L);
obTest.placeOrder(newBid2);

Order newAsk1 = new Order("11","ask1", 1.0f, 92.4f, OrderType.MARKET_ORDER, true,
Side.ASK, 2277779955L);
obTest.placeOrder(newAsk1);

assertEquals(2, obTest.bids.size());
assertEquals(1, obTest.asks.size());
assertEquals(90.0f, obTest.bids.getFirst().price);
assertEquals(92.4f, obTest.bestAskPrice);
assertEquals(90.0f, obTest.bestBidPrice);
assertEquals(11.0f, obTest.sittingVolume);

Fill fill1 = new Fill("1", "him", 7.5f, 90.0f, 0.01f, OrderType.MARKET_ORDER, Side.BID, 3277779955L);
obTest.fillEvent(fill1);

assertEquals(3.5f, obTest.sittingVolume);
assertEquals(1, obTest.bids.size());
assertEquals(1, obTest.asks.size());

Fill fill2 = new Fill("12", "him2", 2.5f, 10.0f, 0.02f, OrderType.MARKET_ORDER, Side.BID, 3277777777L);
obTest.fillEvent(fill2);

assertEquals(1.0f, obTest.sittingVolume);
assertEquals(0, obTest.bids.size());
assertEquals(1, obTest.asks.size());
}

@Test
void RedundantFill(){
OrderBook obTest = new OrderBook();
assertEquals(0, obTest.asks.size());
assertEquals(0, obTest.bids.size());
assertEquals(-1f, obTest.bestAskPrice);
assertEquals(-1f, obTest.bestBidPrice);
assertEquals(0f, obTest.sittingVolume);
// Operation
Order newBid1 = new Order(6.3f, 5.8f, Side.BID, 3277777780L);
obTest.placeOrder(newBid1);

Order newBid2 = new Order("112","bid2", 7.0f, 90.0f, OrderType.MARKET_ORDER, true,
Side.BID, 3277779955L);
obTest.placeOrder(newBid2);

assertEquals(12.8f, obTest.sittingVolume);

Fill fill1 = new Fill("1", "him", 5.8f, 6.3f, 0.01f, OrderType.MARKET_ORDER, Side.BID, 3277777780L);
obTest.fillEvent(fill1);

assertEquals(7.0f, obTest.sittingVolume);
assertEquals(1, obTest.bids.size());
assertEquals(0, obTest.asks.size());

obTest.fillEvent(fill1);
assertEquals(7.0f, obTest.sittingVolume);
assertEquals(1, obTest.bids.size());
assertEquals(0, obTest.asks.size());
}
}