From 8d0643dbcadde4b72182a1483dc6114ccc960436 Mon Sep 17 00:00:00 2001
From: ejff9 <81577823+ejff9@users.noreply.github.com>
Date: Thu, 2 Mar 2023 17:50:34 -0500
Subject: [PATCH 1/3] Eli Test cases
Added 4 test cases, including multiple fills test and a duplicate fills test
---
.idea/runConfigurations.xml | 10 ---
Data-Integration.iml | 26 ++++++++
src/test/testOrderBook.java | 125 +++++++++++++++++++++++++++++++++++-
3 files changed, 149 insertions(+), 12 deletions(-)
delete mode 100644 .idea/runConfigurations.xml
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
deleted file mode 100644
index 797acea..0000000
--- a/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Data-Integration.iml b/Data-Integration.iml
index 6f3b297..6593985 100644
--- a/Data-Integration.iml
+++ b/Data-Integration.iml
@@ -43,5 +43,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/testOrderBook.java b/src/test/testOrderBook.java
index 30d1653..c231c1e 100644
--- a/src/test/testOrderBook.java
+++ b/src/test/testOrderBook.java
@@ -1,9 +1,11 @@
import OrderBook.Order;
import OrderBook.OrderBook;
import OrderBook.Side;
-import org.junit.jupiter.api.Test;
+import OrderBook.OrderType;
+import OrderBook.Fill;
+import org.junit.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
class testOrderBook {
@@ -168,4 +170,123 @@ 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());
+ }
+
}
From 5d4ca162391e03c3340b2d745a95586eb571844c Mon Sep 17 00:00:00 2001
From: ejff9 <81577823+ejff9@users.noreply.github.com>
Date: Wed, 8 Mar 2023 12:17:42 -0500
Subject: [PATCH 2/3] Small change
changes
---
.idea/.name | 1 +
.idea/vcs.xml | 2 +-
Data-Integration.iml | 2 +-
src/test/testOrderBook.java | 3 ++-
4 files changed, 5 insertions(+), 3 deletions(-)
create mode 100644 .idea/.name
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/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/Data-Integration.iml b/Data-Integration.iml
index 6593985..2047215 100644
--- a/Data-Integration.iml
+++ b/Data-Integration.iml
@@ -54,7 +54,7 @@
-
+
diff --git a/src/test/testOrderBook.java b/src/test/testOrderBook.java
index c231c1e..9974fdd 100644
--- a/src/test/testOrderBook.java
+++ b/src/test/testOrderBook.java
@@ -3,9 +3,10 @@
import OrderBook.Side;
import OrderBook.OrderType;
import OrderBook.Fill;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test;
-import static org.junit.jupiter.api.Assertions.assertEquals;
class testOrderBook {
From 715b406b0ce0fdbda3dd3f1bd323b06b68f97a26 Mon Sep 17 00:00:00 2001
From: ejff9 <81577823+ejff9@users.noreply.github.com>
Date: Wed, 8 Mar 2023 12:23:27 -0500
Subject: [PATCH 3/3] Fixed small errors
Fixed some errors
---
.../OrderBook/OrderBook.class | Bin 3292 -> 3384 bytes
.../Data-Integration/classpath.index | Bin 0 -> 132 bytes
out/test/Data-Integration/classpath.index | Bin 0 -> 96 bytes
out/test/Data-Integration/testOrderBook.class | Bin 4885 -> 6821 bytes
src/test/testOrderBook.java | 119 +++++++++++++++++-
5 files changed, 118 insertions(+), 1 deletion(-)
create mode 100644 out/production/Data-Integration/classpath.index
create mode 100644 out/test/Data-Integration/classpath.index
diff --git a/out/production/Data-Integration/OrderBook/OrderBook.class b/out/production/Data-Integration/OrderBook/OrderBook.class
index bac9b96ff668a52d326b51f5f233f39b467a496b..d5d734bbc717a19680795838063952b41d2e1c64 100644
GIT binary patch
delta 1143
zcmZ9LT~L%|6vuz>?n^KG@&pLGOMDdxjvp(DAHk%MfEpkwAg(K#2`g9%1wtA~g`%Zt
zALuK7pqWrc&7?CZGL9GKRny=_)15Oq(_NQxr!$(_d3JTjX)pfI`<&;T|2gM>&fZPG
zmeDu)@AVr%5kJ_>WxYkn#>ILM0XAr8u-Itx0-N;ZZ4H~vU-yFkdPl<+4UHaBXz~zd
zs}670&|?pN
zgBB+gCpo29%xT3Chn)NFP~I8ES-w@A<2%K9h81O$E9zLH7~y-xDpp_FX%4vie#azE
zhAVN_VLw%b9~u_RLQyX#`1U3mG!?EV{|2hgU?;9De3i
zt}vaOLxE7tXCVtD*FtKgo-nV=`W8wzMfCE9EYD(&QY<@B${Fz=mRg@x-a$NToKtpo
zZjHnm!Z#Qx&=o5%YAKMc)y{4EWuwk{V286SBx|McRYjO|Bgke&JFj+jC*)_WrChAV
zVm~I$x#TR7dFA~^iZhY0VtK8|Stsf0$z+|#8q|M$aSufZ{n3D!lqFB4)Ec=l{K8x>
r8Z1@8^hOeCB1yXTvQ=i*EVF761-3aCRoY9@uAYV^N!U7Ja1s0u>?_Oz
delta 1053
zcmZ{i*H2VY5Qo1lcz2g0tFUg=b!}K#u!}Vo6c8*Zf{Fzcv0*{6BI2SH3s$b6f;~|Z
z;|sb`Rp%SIu;)LNO^@au-4NWvV@E259Y^lzw
zs@gd|zA~KB=mwS3oH3lG#c+=E78fio8ZL3!(28ww#n48(VJ24%*92y}+^a@hH+0Zx
zxWP@sEp8j;lVvDimf;R}4f!m7Qs=(p>K(-`AH0slNU}e9L!qYh@KgG}COJlmI8)j>
zm=P(75l9c)rJi76pR^e6aO5fdR(H``jD#Me`=7k_8>A}qG5!bmefD<)3LMo9u15>({nV`i
diff --git a/out/production/Data-Integration/classpath.index b/out/production/Data-Integration/classpath.index
new file mode 100644
index 0000000000000000000000000000000000000000..1dce18a5e5219f979169679cc6a7ba94d02a5729
GIT binary patch
literal 132
zcmb1OU}9ikU<6_qaJM+&V4$K~597=2U-iK6wj;MTOn^w*d#VU4NU7{~WDReBS4%K3
Rc>Dy3*(zl`$d+bc001_*4uAjv
literal 0
HcmV?d00001
diff --git a/out/test/Data-Integration/classpath.index b/out/test/Data-Integration/classpath.index
new file mode 100644
index 0000000000000000000000000000000000000000..17aa3034f4fdd78b72fe4745cfe6265da4abc3ce
GIT binary patch
literal 96
ecmb1OU}QiAa{E_3@Vo8Et%xd22G3TBfdK$DFa&l0
literal 0
HcmV?d00001
diff --git a/out/test/Data-Integration/testOrderBook.class b/out/test/Data-Integration/testOrderBook.class
index 7d69c528f7dfba8b6cb37b28846b90820a310adf..17e5ae8e185d1433875a06a0f12dddab7a0f823e 100644
GIT binary patch
delta 2872
zcmbVOX>b%(5dM1ec6W9%fiMXOC=dmS5Re?mnS|XSi4aJDpgo&0z$wffFcSWAo0Khv`R~Vs8uSZf|QmV+HYod2{DBwRPnZ_U%#*W`?}wQ
zCwp$WDRAV%-u(au;)IInSnS5bDjZns;bn=6rC6q7IUbRpkBT=I0@8X+`c_Emak)I<
zh9P|2laj=+12SMGo^&!K3eOMRq9OvTB;slbw#LJswQ^Z2m#0(&mSdgpzF50fq}JB1
zwT@l5Zjta#I&)B@n)z1ZX&Y|Xiwf2&ct&`a&;Qng4cI8*H!0Yx;923_Fz)AIV7`Ja
z3Z4_*NI;|>J=$b$c>dnAQo-{IUJ%1J$cJP
zEW8U{eh|aHFD@3|%}mnEmg!&ii#lC+4|DC_J$CH}r~Xu}V7u_fFuac!GmyQN3SJT3
zU)h_sJLElmS{Z~LBCXM`Z}FjCr-d&bP_R=$o$yYV<}Q)E`M4^)-$=;ON1NQ(?Z&IS
zZld)RXfvy{pwORFQZ}p9@2i?ga8=Bh;IFDCG~Y=pDI#J<=r_J}TpcLD3__HN
znpROUvtP*4P>%*T8a3>}UN`n>cnz;>*pCJcZ{UFZd{e_)(mIF(gtnoR7KRG`x*>
zG!)=n4e#Nwh9h`i!%=x;k6fDYK@W-Zp@xs}4k0WdF^M2%Fda8O)^H4;$kU%1Yr?#}
z3-FnS&v9IaB``T&nVLhIBtP#cDdV%eChqz!Y?UJiF_^}8LjH;1zswVaLbm$xFY&Ll
zcLQiA8x9ol>N1@w{A_Dh0E%%te*t&!VFwD06RyKlWNdP04wX?c2;;TUj#97#CAgDM
zjzT$RqLfdR@xH_@=U<@0M!7+GiiB}U>C0HBlq&}0NX;zco3?JFW1DJ5ex%KRD`8cC
zDcW5&T6DW6Mq9v0`H@v4qz-0TEJjZ|<=eXBd%c=YR|~$;pUT$dL;Qxe-MQx{?R6q#~ZeF^D2CirOHXB9Tk&
z;3pk(DGEy{8tbS%bL+s|u3~N-FUu`XJ{7HvW56QEZ&L!o;RYzrh-sG+7^(NrN9mb$
z=qXIXqZ<%ACazCCqW2+UvYw^)(zErkq3v%=n|
z?X(nfHo_&?WS2Dcv6kB!*$#~Xo`(tSG6zHMnc7WcLu$7VgC^^f^vSXWeJH0fOXM1o
zhdARpIqQ+4=h~q%2e+t2Iul^9o+l~l`9T2Ym^{Q4*U43nK#FDqgtZEAaWv11Ob}$xAnrkFqI^a%s5P?pv&mg`SKYSff0iM`$5m
zUI!}iqy2QQ!27t5eS+^yF&6O^adNuraX(wG7Ej&-dT=agA&-TVFW=X4EQ&+(-+-tV
z<1nSwanPsQI)-|du8+9bvkWP@H5n=T6gyNH-6GmYn&Wb*^Xh>7_wzQiXT>vE@mpB&
zk*xSARy>mxAI*wq@qNkW`!WtCl!J1*mG8?$7&HmBl#5N2hi#OPMw-gXPh;h$;}{j-
sE1F>n+TY?D6qNrP5PTa}NL@NzkMJND>A*w(0AgZD#Q*>R
delta 1290
zcmbVKS!|3^6#o91TmRBKhE|YBqd`0rDJE1xrZZHBE~>S4MYn0IC~d99)V_3-`a5N6
z8%t?R1ue=06;Ej6(X$sGka!>w(Q@w0m=q79fAXJu?!D)H-*?WrEwen6T`vY6Jq8em
zTN)N1Uq*oj1M*ceg&K-btig#Au`Oj!Y60PuiL-UWD;H+Hj19~_(PCloJtANuD#8d7
zh5d0Y8cf(E5H}03N|m-%!c+^hMT5(Ut<2WuZDv-lw>gkDFkv6FWqx_atbV?Y*cOC~
zZ&R>c!476~?|h?TCu#)zE(N<4>|r)v`iEbExe8ngYME^Wz^uK!ef|se$HPVidll?s
z@jh|UX^FEi`x2*9#(o6{6dYvpCcf4*%)ucc`fyNC)H@dc*69=_9FcKU#<9+O(gjI>
zX`En8z(W0#ajdHjZW+fp>TyEGNsb1b;?UvdXoN>>n>bDj?+iQ=%xRTH#g+3bD#~O1
zo(wNXGtP1(;2g(!T;R9}AIBw;QZLM9ToEu=Ia+X5f^o)7iv(6sRy0G#HLl`1T19r7
zev;Wt325iIftws1@O6G;O@=%Pa!GM@N`6%}qA{O_Ek2cgssIua$%~~`qBSh$0i-+R
z7~mi~%zvn15&1k2fW=6n9gs}P1|;gyqZaE^m0HQ6cPPnoMPxLLWV?fr3T`6>sg#{W
z4`d0_C~GO*3+!}Sfs8>&yVMLx)?ca92(Moq8s4%&c)glXmKvVy7>csx0VF_bMK~!2
zzU!AvtMu9Ym^58~%EuG-8=jLTu&sgnP}QGsgq(ulm8f;{BwE(0`pIGc_GZNk@g;#
rx-hyMTEw_1U10ZN*R#!0x?73Rvm%ERUuoq3@U8xfPr@2fYrxu{ewOEV
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());
+ }
}