예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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!");
        }