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());
+ }
}