-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEquityAlgoExecutionServiceTest.java
More file actions
127 lines (120 loc) · 6.17 KB
/
Copy pathEquityAlgoExecutionServiceTest.java
File metadata and controls
127 lines (120 loc) · 6.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.*;
import java.util.PriorityQueue;
import org.junit.jupiter.api.Test;
class EquityAlgoExecutionServiceTest {
//test ExecutionOrder price and quantity when bid and offer have same prices and quantities
@Test
void testProcessOrderEqualPriceandQuantity() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(278.59,800,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(278.59,800,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(800,EO.getQuantity(),"quantity is wrong, shoule be 800");
assertEquals(278.59,EO.getPrice(),0.1,"price is wrong, should be 278.59");
}
//test ExecutionOrder price and quantity when bid and offer have same prices and bid quantity < offer quantity
@Test
void testProcessOrderEqualPriceBidQuntityIsSmaller() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(278.59,790,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(278.59,800,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(790,EO.getQuantity(),"quantity is wrong, shoule be 790");
assertEquals(278.59,EO.getPrice(),0.1,"price is wrong, should be 278.59");
}
//test ExecutionOrder price and quantity when bid and offer have same prices and bid quantity > offer quantity
@Test
void testProcessOrderEqualPriceOfferQuntityIsSmaller() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(278.59,800,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(278.59,700,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(700,EO.getQuantity(),"quantity is wrong, shoule be 700");
assertEquals(278.59,EO.getPrice(),0.05,"price is wrong, should be 278.59");
}
//test ExecutionOrder price and quantity when bid and offer have same quantities and bid price < offer price
@Test
void testProcessOrderEqualQuantityBidPriceIsLower() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(213.84,800,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(278.59,800,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(800,EO.getQuantity(),"quantity is wrong, shoule be 800");
assertEquals(246.21,EO.getPrice(),0.1,"price is wrong, should be 246.21");
}
//test ExecutionOrder price and quantity when bid and offer have same quantities and offer price < bid price
@Test
void testProcessOrderEqualQuantityOfferPriceIsLower() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(213.84,800,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(185.32,800,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(800,EO.getQuantity(),"quantity is wrong, shoule be 800");
assertEquals(199.58,EO.getPrice(),0.1,"price is wrong, should be 199.58");
}
//test ExecutionOrder price and quantity when bid and offer have same quantities and offer price < bid price
@Test
void testProcessOrderNotEqualQuantityNotEqualPrice() {
//create bidStack
PriorityQueue<Order> bidStack = new PriorityQueue<Order>();
bidStack.add(new Order(213.84,800,PricingSide.values()[0]));
//create offerStack
PriorityQueue<Order> offerStack = new PriorityQueue<Order>();
offerStack.add(new Order(185.32,718,PricingSide.values()[1]));
//create equity
Equity eq = new Equity("APPL",438000000,1.06);
//create an OrderBook
OrderBook<Equity> data = new OrderBook<Equity>(eq,bidStack,offerStack);
EquityAlgoExecutionService EAEService = EquityAlgoExecutionService.getInstance();
EAEService.processOrder(data);
ExecutionOrder EO= EAEService.getData("APPL");
assertEquals(718,EO.getQuantity(),"quantity is wrong, shoule be 718");
assertEquals(199.58,EO.getPrice(),0.1,"price is wrong, should be 199.58");
}
}