@Before public void setUp() throws Exception { f = new Factory(); books = f.makeOrderBooks(); TE = f.makeTradeEngine(); assertEquals(books.askListSize(), 0); assertEquals(books.bidListSize(), 0); assertEquals(TE.getTradeList().size(), 0); TE.setOpenTradingTime("00:00:00.000"); }
@Test public void testCorrectTradeAttributes() { // tests for the correct attributes of a trade order0 = new Order("00:00:00.000", "ENTER", 8.31, 50, "", new BigInteger("1"), "B"); order1 = new Order("00:00:01.000", "ENTER", 8.31, 50, "", new BigInteger("2"), "A"); books.processOrder(order0); books.processOrder(order1); assertEquals(books.bidListSize(), 1); assertEquals(TE.getTradeList().size(), 0); assertEquals(books.askListSize(), 1); TE.trade(); assertEquals(TE.getTradeList().size(), 1); compareTrade(TE.getTradeList().get(0), order0, order1, 8.31, 50, "00:00:01.000"); order2 = new Order("00:00:00.000", "ENTER", 8.34, 100, "", new BigInteger("3"), "B"); order3 = new Order("00:00:01.000", "ENTER", 8.34, 50, "", new BigInteger("4"), "A"); order4 = new Order("00:00:02.000", "ENTER", 8.34, 50, "", new BigInteger("5"), "A"); books.processOrder(order2); books.processOrder(order3); books.processOrder(order4); assertEquals(books.bidListSize(), 1); assertEquals(books.askListSize(), 2); TE.trade(); assertEquals(TE.getTradeList().size(), 3); compareTrade(TE.getTradeList().get(0), order2, order4, 8.34, 50, "00:00:02.000"); compareTrade(TE.getTradeList().get(1), order2, order3, 8.34, 50, "00:00:02.000"); }
@Test public void testUnequalVolumeEqualPrice() { order0 = new Order("00:00:00.000", "ENTER", 8.34, 100, "", new BigInteger("1"), "B"); order1 = new Order("00:00:01.000", "ENTER", 8.34, 50, "", new BigInteger("2"), "A"); order2 = new Order("00:00:02.000", "ENTER", 8.34, 50, "", new BigInteger("3"), "A"); books.processOrder(order0); assertEquals(books.bidListSize(), 1); assertEquals(books.askListSize(), 0); TE.trade(); assertEquals(TE.getTradeList().size(), 0); books.processOrder(order1); assertEquals(books.askListSize(), 1); books.processOrder(order2); assertEquals(books.askListSize(), 2); TE.trade(); assertEquals(TE.getTradeList().size(), 2); compareTrade(TE.getTradeList().get(0), order0, order2, 8.34, 50, "00:00:02.000"); compareTrade(TE.getTradeList().get(1), order0, order1, 8.34, 50, "00:00:02.000"); assertEquals(books.bidListSize(), 0); assertEquals(books.askListSize(), 0); }
@Test public void testTradeEqualVolumeEqualPrice() { // tests to see if the trades list: isn't missing any, correctly captures strategy trades // anything else that you can think of order0 = new Order("00:00:00.000", "ENTER", 8.31, 50, "", new BigInteger("1"), "B"); order1 = new Order("00:00:01.000", "ENTER", 8.31, 50, "", new BigInteger("2"), "A"); books.processOrder(order0); assertEquals(books.bidListSize(), 1); TE.trade(); assertEquals(TE.getTradeList().size(), 0); books.processOrder(order1); assertEquals(books.askListSize(), 1); TE.trade(); assertEquals(TE.getTradeList().size(), 1); compareTrade(TE.getTradeList().get(0), order0, order1, 8.31, 50, "00:00:01.000"); assertEquals(books.askListSize(), 0); assertEquals(books.bidListSize(), 0); TE.trade(); assertEquals(TE.getTradeList().size(), 1); assertEquals(books.askListSize(), 0); assertEquals(books.bidListSize(), 0); }
private void compareTrade(Trade t, Order bid, Order ask, Double price, int volume, String time) { assertTrue(OrderBooks.compareDoubleEquals(t.price(), price)); assertEquals(t.volume(), volume); assertEquals(t.time(), time); }