diff --git a/src/main/java/net/laffyco/javamatchingengine/engine/OrderBook.java b/src/main/java/net/laffyco/javamatchingengine/engine/OrderBook.java index f698430..14d9e9a 100644 --- a/src/main/java/net/laffyco/javamatchingengine/engine/OrderBook.java +++ b/src/main/java/net/laffyco/javamatchingengine/engine/OrderBook.java @@ -31,16 +31,11 @@ public class OrderBook { private double lastSalePrice; /** - * Create an instance of OrderBook. - * - * @param pBuyOrders - * @param pSellOrders + * Constructor. */ - public OrderBook(final List pBuyOrders, - final List pSellOrders) { - super(); - this.buyOrders = pBuyOrders; - this.sellOrders = pSellOrders; + public OrderBook() { + this.buyOrders = new ArrayList(); + this.sellOrders = new ArrayList(); } /** diff --git a/src/test/java/net/laffyco/javamatchingengine/engine/CancelOrderTests.java b/src/test/java/net/laffyco/javamatchingengine/engine/CancelOrderTests.java index 195d9b4..f36239c 100644 --- a/src/test/java/net/laffyco/javamatchingengine/engine/CancelOrderTests.java +++ b/src/test/java/net/laffyco/javamatchingengine/engine/CancelOrderTests.java @@ -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. @@ -17,8 +18,9 @@ public class CancelOrderTests extends MatchingEngineTest { /** * Order book. */ - private final OrderBook orderBook = new OrderBook(new ArrayList(), - new ArrayList()); + @InjectMocks + @Resource + private OrderBook orderBook; /** * Attempt to cancel an order that doesn't exist. @@ -125,5 +127,4 @@ public void cancelSellOrderSideGiven() { assertEquals(this.orderBook.cancelOrder(order.getId(), side), true); assertEquals(this.orderBook.getSellOrders().size(), 0); } - } diff --git a/src/test/java/net/laffyco/javamatchingengine/engine/MatchingEngineTest.java b/src/test/java/net/laffyco/javamatchingengine/engine/MatchingEngineTest.java index a6dfc8e..892bdd3 100644 --- a/src/test/java/net/laffyco/javamatchingengine/engine/MatchingEngineTest.java +++ b/src/test/java/net/laffyco/javamatchingengine/engine/MatchingEngineTest.java @@ -1,5 +1,8 @@ package net.laffyco.javamatchingengine.engine; +import org.junit.jupiter.api.BeforeEach; +import org.mockito.MockitoAnnotations; + /** * Common test functionality. * @@ -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. * diff --git a/src/test/java/net/laffyco/javamatchingengine/engine/OrderBookTests.java b/src/test/java/net/laffyco/javamatchingengine/engine/OrderBookTests.java index 5b4b710..25f89b7 100644 --- a/src/test/java/net/laffyco/javamatchingengine/engine/OrderBookTests.java +++ b/src/test/java/net/laffyco/javamatchingengine/engine/OrderBookTests.java @@ -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. @@ -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(), - new ArrayList()); - } +// /** +// * Test setup. +// */ +// @BeforeEach +// public void setUp() { +// this.orderBook = new OrderBook(new ArrayList(), +// new ArrayList()); +// } /** * Add a buy order, then add a matching sell order. @@ -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); + } } diff --git a/src/test/java/net/laffyco/javamatchingengine/engine/OrderTests.java b/src/test/java/net/laffyco/javamatchingengine/engine/OrderTests.java index 16f18dd..5c19379 100644 --- a/src/test/java/net/laffyco/javamatchingengine/engine/OrderTests.java +++ b/src/test/java/net/laffyco/javamatchingengine/engine/OrderTests.java @@ -2,6 +2,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; +import java.util.Date; + import org.junit.jupiter.api.Test; /** @@ -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); + } +} \ No newline at end of file diff --git a/src/test/java/net/laffyco/javamatchingengine/engine/SpreadTests.java b/src/test/java/net/laffyco/javamatchingengine/engine/SpreadTests.java index 44dd3ae..1676a66 100644 --- a/src/test/java/net/laffyco/javamatchingengine/engine/SpreadTests.java +++ b/src/test/java/net/laffyco/javamatchingengine/engine/SpreadTests.java @@ -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. @@ -17,8 +19,9 @@ public class SpreadTests extends MatchingEngineTest { /** * Order book. */ - private final OrderBook orderBook = new OrderBook(new ArrayList(), - new ArrayList()); + @InjectMocks + @Resource + private OrderBook orderBook; @Test void spreadTwoOrders() {