Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,11 @@ public class OrderBook {
private double lastSalePrice;

/**
* Create an instance of OrderBook.
*
* @param pBuyOrders
* @param pSellOrders
* Constructor.
*/
public OrderBook(final List<Order> pBuyOrders,
final List<Order> pSellOrders) {
super();
this.buyOrders = pBuyOrders;
this.sellOrders = pSellOrders;
public OrderBook() {
this.buyOrders = new ArrayList<Order>();
this.sellOrders = new ArrayList<Order>();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

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

import java.util.ArrayList;
import javax.annotation.Resource;

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;

/**
* Test the cancel order functionality.
Expand All @@ -17,8 +18,9 @@ public class CancelOrderTests extends MatchingEngineTest {
/**
* Order book.
*/
private final OrderBook orderBook = new OrderBook(new ArrayList<Order>(),
new ArrayList<Order>());
@InjectMocks
@Resource
private OrderBook orderBook;

/**
* Attempt to cancel an order that doesn't exist.
Expand Down Expand Up @@ -125,5 +127,4 @@ public void cancelSellOrderSideGiven() {
assertEquals(this.orderBook.cancelOrder(order.getId(), side), true);
assertEquals(this.orderBook.getSellOrders().size(), 0);
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package net.laffyco.javamatchingengine.engine;

import org.junit.jupiter.api.BeforeEach;
import org.mockito.MockitoAnnotations;

/**
* Common test functionality.
*
Expand All @@ -8,6 +11,14 @@
*/
public abstract class MatchingEngineTest {

/**
* Test setup.
*/
@BeforeEach
public void setup() {
MockitoAnnotations.openMocks(this);
}

/**
* Add an array of orders to the order book.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package net.laffyco.javamatchingengine.engine;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;

import java.util.ArrayList;
import java.util.List;

import org.junit.jupiter.api.BeforeEach;
import javax.annotation.Resource;

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;

/**
* Order book tests.
Expand All @@ -19,22 +21,24 @@ public class OrderBookTests extends MatchingEngineTest {
/**
* Array of orders.
*/
private final Order[] orders = {new Order(3, 2, Side.BUY),
new Order(3, 2, Side.SELL)};
private final Order[] orders = { new Order(3, 2, Side.BUY),
new Order(3, 2, Side.SELL) };

/**
* Test OrderBook.
*/
@InjectMocks
@Resource
private OrderBook orderBook;

/**
* Test setup.
*/
@BeforeEach
public void setUp() {
this.orderBook = new OrderBook(new ArrayList<Order>(),
new ArrayList<Order>());
}
// /**
// * Test setup.
// */
// @BeforeEach
// public void setUp() {
// this.orderBook = new OrderBook(new ArrayList<Order>(),
// new ArrayList<Order>());
// }

/**
* Add a buy order, then add a matching sell order.
Expand Down Expand Up @@ -130,4 +134,16 @@ public void findOrder() {
assertEquals(this.orderBook.findOrder(this.orders[0].getId(),
this.orders[0].getSide()), this.orders[0]);
}

/**
* Test that no orders are cancelled when an invalid side is provided.
*/
@Test
public void cancelTestInvalidSide() {

final String orderId = "";

final boolean result = this.orderBook.cancelOrder(orderId, null);
assertFalse(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

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

import java.util.Date;

import org.junit.jupiter.api.Test;

/**
Expand All @@ -10,22 +12,39 @@
*/
public class OrderTests extends MatchingEngineTest {

final int amt = 1;
final double price = 2;
final Side side = Side.BUY;

/**
* Compare two orders with different prices.
*/
@Test
public void comparePrice() {
final int amt = 1;
final double price1 = 2;
final double price2 = 3;
final Side side = Side.BUY;

final Order order1 = new Order(amt, price1, side);
final Order order2 = new Order(amt, price2, side);
final Order order1 = new Order(this.amt, this.price, this.side);
final Order order2 = new Order(this.amt, price2, this.side);

// Assert
assertTrue(order1.compareTo(order2) < 0);
assertTrue(order2.compareTo(order1) > 0);
}

}
/**
* Compare orders with the same price, so therefore time is taken into
* account.
*/
@Test
public void compareSamePrice() {
final String id = "id";
final Order order1 = new Order(this.amt, this.price, id, this.side,
new Date(1626518162));
final Order order2 = new Order(this.amt, this.price, id, this.side,
new Date(1626515150));

// Assert
assertTrue(order1.compareTo(order2) > 0);
assertTrue(order2.compareTo(order1) < 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

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

import java.util.ArrayList;
import java.util.Date;

import javax.annotation.Resource;

import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;

/**
* Test the getSpread() functionality.
Expand All @@ -17,8 +19,9 @@ public class SpreadTests extends MatchingEngineTest {
/**
* Order book.
*/
private final OrderBook orderBook = new OrderBook(new ArrayList<Order>(),
new ArrayList<Order>());
@InjectMocks
@Resource
private OrderBook orderBook;

@Test
void spreadTwoOrders() {
Expand Down