diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..9b04062 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Data-Integration.iml \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7b45e61..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/out/production/Data-Integration/OrderBook/OrderBook.class b/out/production/Data-Integration/OrderBook/OrderBook.class index bac9b96..d5d734b 100644 Binary files a/out/production/Data-Integration/OrderBook/OrderBook.class and b/out/production/Data-Integration/OrderBook/OrderBook.class differ diff --git a/out/production/Data-Integration/classpath.index b/out/production/Data-Integration/classpath.index new file mode 100644 index 0000000..1dce18a Binary files /dev/null and b/out/production/Data-Integration/classpath.index differ diff --git a/out/test/Data-Integration/classpath.index b/out/test/Data-Integration/classpath.index new file mode 100644 index 0000000..17aa303 Binary files /dev/null and b/out/test/Data-Integration/classpath.index differ diff --git a/out/test/Data-Integration/testOrderBook.class b/out/test/Data-Integration/testOrderBook.class index 7d69c52..17e5ae8 100644 Binary files a/out/test/Data-Integration/testOrderBook.class and b/out/test/Data-Integration/testOrderBook.class differ diff --git a/src/test/testOrderBook.java b/src/test/testOrderBook.java index f63556e..4be4672 100644 --- a/src/test/testOrderBook.java +++ b/src/test/testOrderBook.java @@ -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); } @@ -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()); + } }