public void MarketOrderShouldDecreaseAvailableQuantity() { var market = new Market { SellPrice = 100M, SellQuantity = 50 }; var order = market.CreateMarketOrder(Way.Buy, quantity: 10); market.Send(order); Check.That(market.SellQuantity).IsEqualTo(40); }
public void MarketOrderShouldCaptureExec() { var market = new Market { SellPrice = 100M, SellQuantity = 50 }; var executed = false; var order = market.CreateMarketOrder(Way.Buy, quantity: 10); market.OrderExecuted += (s, a) => executed = true; market.Send(order); Check.That(executed).IsTrue(); Check.That(market.SellQuantity).IsEqualTo(40); }
public void LargeMarketOrderShouldFail() { var market = new Market { SellPrice = 100M, SellQuantity = 50 }; var order = market.CreateMarketOrder(Way.Buy, quantity: 100); bool failed = false; string failureReason = null; market.OrderFailed += (s, failure) => { failed = true; failureReason = failure; }; market.Send(order); Check.That(failed).IsTrue(); Check.That(failureReason).IsEqualTo("Excessive quantity!"); }
public void LimitOrderShouldFailIfPriceTooHigh() { var market = new Market { SellPrice = 100M, SellQuantity = 50 }; var executed = false; bool failed = false; string failureReason = null; var order = market.CreateLimitOrder(Way.Buy, price: 101M, quantity: 10, allowPartialExecution: false); market.OrderExecuted += (s, a) => executed = true; market.OrderFailed += (s, failure) => { failed = true; failureReason = failure; }; market.Send(order); Check.That(executed).IsFalse(); Check.That(failed).IsTrue(); Check.That(failureReason).IsEqualTo("Invalid price"); Check.That(market.SellQuantity).IsEqualTo(50); }
public void LimitOrderShouldSupportPartialExecution() { var market = new Market { SellPrice = 100M, SellQuantity = 50 }; var executed = false; var order = market.CreateLimitOrder(Way.Buy, price: 100M, quantity: 110, allowPartialExecution: true); var execQuantity = 0; market.OrderExecuted += (s, a) => { executed = true; execQuantity = a.Quantity; }; market.Send(order); Check.That(execQuantity).IsEqualTo(50); Check.That(executed).IsTrue(); Check.That(market.SellQuantity).IsEqualTo(0); }