public void AddBuyOrder_BuyLess_PartialMatch_NewTrade() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 65, 55, OrderType.Sell, 14); var currentOrder2 = new Order(1002, 55, 55, OrderType.Buy, 15); currentMatcher.ProcessOrder(currentOrder1); currentMatcher.ProcessOrder(currentOrder2); var returnedTrade = currentMatcher.CurrentTrade; var currentTrade = new Trade(currentOrder2.AccountNumber, 55, currentOrder2.Price, currentOrder2.Action); Assert.Equal(currentTrade, returnedTrade); }
public void AddBuyOrder_OneExistingOrder_MatcherWithTwoOrders() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 45, 55, OrderType.Buy, 14); var currentOrder2 = new Order(1002, 46, 56, OrderType.Buy, 15); currentMatcher.ProcessOrder(currentOrder1); currentMatcher.ProcessOrder(currentOrder2); var orders = new List <Order>() { currentOrder1, currentOrder2 }; Assert.Equal(orders, currentMatcher.ExistingOrders); }
public void OneExistingTrade() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 65, 55, OrderType.Sell, 14); var currentOrder2 = new Order(1002, 55, 55, OrderType.Buy, 15); currentMatcher.ProcessOrder(currentOrder1); currentMatcher.ProcessOrder(currentOrder2); var trades = new List <Trade> { currentMatcher.CurrentTrade }; Assert.Equal(trades, currentMatcher.ExistingTrades); }
public void AddBuyOrder_EmptyMatcher_OneOrderAdded() { var currentOrder = new Order(1001, 45, 55, OrderType.Buy, 13); var currentMatcher = new OrderMatcher(); currentMatcher.ProcessOrder(currentOrder); Assert.Same(currentOrder, currentMatcher.ExistingOrders[0]); }
public void AddBuyOrder_EmptyMatcher_NullTrade() { var currentOrder = new Order(1001, 45, 55, OrderType.Buy, 13); var currentMatcher = new OrderMatcher(); currentMatcher.ProcessOrder(currentOrder); var currentTrade = currentMatcher.CurrentTrade; Assert.Null(currentTrade); }
public void TwoExistingTrades() { var currentMatcher = new OrderMatcher(); var currentOrder1 = new Order(1001, 65, 55, OrderType.Sell, 14); var currentOrder2 = new Order(1002, 65, 55, OrderType.Buy, 15); currentMatcher.ProcessOrder(currentOrder1); currentMatcher.ProcessOrder(currentOrder2); var currentOrder3 = new Order(1001, 75, 55, OrderType.Sell, 16); var currentOrder4 = new Order(1002, 75, 55, OrderType.Buy, 17); currentMatcher.ProcessOrder(currentOrder3); currentMatcher.ProcessOrder(currentOrder4); var currentTrade1 = new Trade(currentOrder2.AccountNumber, 65, currentOrder2.Price, currentOrder2.Action); var currentTrade2 = new Trade(currentOrder4.AccountNumber, 75, currentOrder4.Price, currentOrder4.Action); var trades = new List <Trade>() { currentTrade1, currentTrade2 }; Assert.Equal(trades, currentMatcher.ExistingTrades); }