Skip to content

Commit 5ba2e77

Browse files
authored
Merge pull request Laffini#13 from Laffini/Increasing-test-coverage
Increasing test coverage
2 parents 8e2373c + 32badff commit 5ba2e77

6 files changed

Lines changed: 79 additions & 34 deletions

File tree

src/main/java/net/laffyco/javamatchingengine/engine/OrderBook.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,11 @@ public class OrderBook {
3131
private double lastSalePrice;
3232

3333
/**
34-
* Create an instance of OrderBook.
35-
*
36-
* @param pBuyOrders
37-
* @param pSellOrders
34+
* Constructor.
3835
*/
39-
public OrderBook(final List<Order> pBuyOrders,
40-
final List<Order> pSellOrders) {
41-
super();
42-
this.buyOrders = pBuyOrders;
43-
this.sellOrders = pSellOrders;
36+
public OrderBook() {
37+
this.buyOrders = new ArrayList<Order>();
38+
this.sellOrders = new ArrayList<Order>();
4439
}
4540

4641
/**

src/test/java/net/laffyco/javamatchingengine/engine/CancelOrderTests.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5-
import java.util.ArrayList;
5+
import javax.annotation.Resource;
66

77
import org.junit.jupiter.api.Test;
8+
import org.mockito.InjectMocks;
89

910
/**
1011
* Test the cancel order functionality.
@@ -17,8 +18,9 @@ public class CancelOrderTests extends MatchingEngineTest {
1718
/**
1819
* Order book.
1920
*/
20-
private final OrderBook orderBook = new OrderBook(new ArrayList<Order>(),
21-
new ArrayList<Order>());
21+
@InjectMocks
22+
@Resource
23+
private OrderBook orderBook;
2224

2325
/**
2426
* Attempt to cancel an order that doesn't exist.
@@ -125,5 +127,4 @@ public void cancelSellOrderSideGiven() {
125127
assertEquals(this.orderBook.cancelOrder(order.getId(), side), true);
126128
assertEquals(this.orderBook.getSellOrders().size(), 0);
127129
}
128-
129130
}

src/test/java/net/laffyco/javamatchingengine/engine/MatchingEngineTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package net.laffyco.javamatchingengine.engine;
22

3+
import org.junit.jupiter.api.BeforeEach;
4+
import org.mockito.MockitoAnnotations;
5+
36
/**
47
* Common test functionality.
58
*
@@ -8,6 +11,14 @@
811
*/
912
public abstract class MatchingEngineTest {
1013

14+
/**
15+
* Test setup.
16+
*/
17+
@BeforeEach
18+
public void setup() {
19+
MockitoAnnotations.openMocks(this);
20+
}
21+
1122
/**
1223
* Add an array of orders to the order book.
1324
*

src/test/java/net/laffyco/javamatchingengine/engine/OrderBookTests.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package net.laffyco.javamatchingengine.engine;
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
45

5-
import java.util.ArrayList;
66
import java.util.List;
77

8-
import org.junit.jupiter.api.BeforeEach;
8+
import javax.annotation.Resource;
9+
910
import org.junit.jupiter.api.Test;
11+
import org.mockito.InjectMocks;
1012

1113
/**
1214
* Order book tests.
@@ -19,22 +21,24 @@ public class OrderBookTests extends MatchingEngineTest {
1921
/**
2022
* Array of orders.
2123
*/
22-
private final Order[] orders = {new Order(3, 2, Side.BUY),
23-
new Order(3, 2, Side.SELL)};
24+
private final Order[] orders = { new Order(3, 2, Side.BUY),
25+
new Order(3, 2, Side.SELL) };
2426

2527
/**
2628
* Test OrderBook.
2729
*/
30+
@InjectMocks
31+
@Resource
2832
private OrderBook orderBook;
2933

30-
/**
31-
* Test setup.
32-
*/
33-
@BeforeEach
34-
public void setUp() {
35-
this.orderBook = new OrderBook(new ArrayList<Order>(),
36-
new ArrayList<Order>());
37-
}
34+
// /**
35+
// * Test setup.
36+
// */
37+
// @BeforeEach
38+
// public void setUp() {
39+
// this.orderBook = new OrderBook(new ArrayList<Order>(),
40+
// new ArrayList<Order>());
41+
// }
3842

3943
/**
4044
* Add a buy order, then add a matching sell order.
@@ -130,4 +134,16 @@ public void findOrder() {
130134
assertEquals(this.orderBook.findOrder(this.orders[0].getId(),
131135
this.orders[0].getSide()), this.orders[0]);
132136
}
137+
138+
/**
139+
* Test that no orders are cancelled when an invalid side is provided.
140+
*/
141+
@Test
142+
public void cancelTestInvalidSide() {
143+
144+
final String orderId = "";
145+
146+
final boolean result = this.orderBook.cancelOrder(orderId, null);
147+
assertFalse(result);
148+
}
133149
}

src/test/java/net/laffyco/javamatchingengine/engine/OrderTests.java

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static org.junit.jupiter.api.Assertions.assertTrue;
44

5+
import java.util.Date;
6+
57
import org.junit.jupiter.api.Test;
68

79
/**
@@ -10,22 +12,39 @@
1012
*/
1113
public class OrderTests extends MatchingEngineTest {
1214

15+
final int amt = 1;
16+
final double price = 2;
17+
final Side side = Side.BUY;
18+
1319
/**
1420
* Compare two orders with different prices.
1521
*/
1622
@Test
1723
public void comparePrice() {
18-
final int amt = 1;
19-
final double price1 = 2;
2024
final double price2 = 3;
21-
final Side side = Side.BUY;
2225

23-
final Order order1 = new Order(amt, price1, side);
24-
final Order order2 = new Order(amt, price2, side);
26+
final Order order1 = new Order(this.amt, this.price, this.side);
27+
final Order order2 = new Order(this.amt, price2, this.side);
2528

2629
// Assert
2730
assertTrue(order1.compareTo(order2) < 0);
2831
assertTrue(order2.compareTo(order1) > 0);
2932
}
3033

31-
}
34+
/**
35+
* Compare orders with the same price, so therefore time is taken into
36+
* account.
37+
*/
38+
@Test
39+
public void compareSamePrice() {
40+
final String id = "id";
41+
final Order order1 = new Order(this.amt, this.price, id, this.side,
42+
new Date(1626518162));
43+
final Order order2 = new Order(this.amt, this.price, id, this.side,
44+
new Date(1626515150));
45+
46+
// Assert
47+
assertTrue(order1.compareTo(order2) > 0);
48+
assertTrue(order2.compareTo(order1) < 0);
49+
}
50+
}

src/test/java/net/laffyco/javamatchingengine/engine/SpreadTests.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44

5-
import java.util.ArrayList;
65
import java.util.Date;
76

7+
import javax.annotation.Resource;
8+
89
import org.junit.jupiter.api.Test;
10+
import org.mockito.InjectMocks;
911

1012
/**
1113
* Test the getSpread() functionality.
@@ -17,8 +19,9 @@ public class SpreadTests extends MatchingEngineTest {
1719
/**
1820
* Order book.
1921
*/
20-
private final OrderBook orderBook = new OrderBook(new ArrayList<Order>(),
21-
new ArrayList<Order>());
22+
@InjectMocks
23+
@Resource
24+
private OrderBook orderBook;
2225

2326
@Test
2427
void spreadTwoOrders() {

0 commit comments

Comments
 (0)