public void SellOrder_ExistingOrdersByTimeRank_OldestOrderProcessed() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 45, 55, OrderType.Buy, 13); var currentOrder2 = new Order(1002, 46, 56, OrderType.Buy, 14); var currentOrder3 = new Order(1003, 46, 56, OrderType.Buy, 4); var currentOrder4 = new Order(1004, 46, 56, OrderType.Buy, 1); var currentOrder5 = new Order(1005, 46, 56, OrderType.Sell, 15); currentMatcher.ExistingOrders.Add(currentOrder1); currentMatcher.ExistingOrders.Add(currentOrder2); currentMatcher.ExistingOrders.Add(currentOrder3); currentMatcher.ExistingOrders.Add(currentOrder4); var oppositeOrders = new List <Order>() { currentOrder4, currentOrder3, currentOrder1, currentOrder2 }; currentMatcher.SellTrade(currentOrder5, oppositeOrders); var orders = new List <Order>() { currentOrder1, currentOrder2, currentOrder3 }; Assert.Equal <List <Order> >(orders, currentMatcher.ExistingOrders); }
public void AddSellOrder_PerfectMatch_ExistingOrdersEmpty() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 45, 55, OrderType.Buy, 14); var currentOrder2 = new Order(1002, 45, 55, OrderType.Sell, 15); currentMatcher.ExistingOrders.Add(currentOrder1); var oppositeOrders = new List <Order>() { currentOrder1 }; currentMatcher.SellTrade(currentOrder2, oppositeOrders); Assert.Empty(currentMatcher.ExistingOrders); }
public void AddSellOrder_SellLess_PartialMatch() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 55, 55, OrderType.Buy, 13); var currentOrder2 = new Order(1002, 45, 55, OrderType.Sell, 14); currentMatcher.ExistingOrders.Add(currentOrder1); var oppositeOrders = new List <Order>() { currentOrder1 }; currentMatcher.SellTrade(currentOrder2, oppositeOrders); var currentOrder4 = new Order(1001, 10, 55, OrderType.Buy, 13); var orders = new List <Order>() { currentOrder4 }; Assert.Equal(orders, currentMatcher.ExistingOrders); }