public void MultipleReceiveTicksAfterSuccessAreIgnored()
        {
            var orderServiceMoq = new Mock <IOrderService>();
            var equityCode      = "CODE1";
            var quantity        = 1;
            var price           = 1.23M;

            orderServiceMoq.Setup(c => c.Buy(equityCode, quantity, price));
            var equityOrder = new EquityOrder(orderServiceMoq.Object, 10);

            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);
            orderServiceMoq.Verify(t => t.Buy(equityCode, quantity, price), Times.Once);
        }
예제 #2
0
        public void GivenPriceGoesBelowThresholdThenItPlacesOrder()
        {
            //Arrange

            //Act
            _equityOrder.ReceiveTick("MIC", 99.99M);

            //Assert
            _orderService.Verify(x => x.Buy("MIC", 100, 99.99M), Times.Once);
        }
        public void MultipleReceiveTicketsAfterFailureAreIgnored()
        {
            var orderServiceMoq = new Mock <IOrderService>();
            var equityCode      = "CODE1";
            var quantity        = 1;
            var price           = 1.23M;

            var equityOrder = new EquityOrder(orderServiceMoq.Object, 10);

            equityOrder.OrderPlaced += e => throw new Exception("error raised");

            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);
            equityOrder.ReceiveTick(equityCode, price);

            orderServiceMoq.Verify(t => t.Buy(equityCode, quantity, price), Times.Once);
        }
        public void TickReceivedAtOrAboveThreshold()
        {
            var orderServiceMoq = new Mock <IOrderService>();
            var equityCode      = "CODE1";
            var quantity        = 1;
            var price           = 10.23M;

            var equityOrder = new EquityOrder(orderServiceMoq.Object, 10);

            equityOrder.ReceiveTick(equityCode, price);
            orderServiceMoq.Verify(t => t.Buy(equityCode, quantity, price), Times.Never);
        }
예제 #5
0
        public void TickBelowTreshhold_SuccessEventReceived()
        {
            // arrange
            OrderPlacedEventArgs  args      = null;
            OrderErroredEventArgs errorArgs = null;

            _sut.OrderPlaced  += evtArgs => { args = evtArgs; };
            _sut.OrderErrored += evtArgs => { errorArgs = evtArgs; };

            // act
            _sut.ReceiveTick(EQUITY_CODE, TRESHOLD - 1);

            // assert
            Assert.IsNull(errorArgs);
            Assert.IsTrue(_sut.Completed);
            Assert.AreSame(EQUITY_CODE, args.EquityCode);
            Assert.AreEqual(TRESHOLD - 1, args.Price);
            _orderServiceMock.Verify(x => x.Buy(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <decimal>()), Times.Once);
            _orderServiceMock.Verify(x => x.Sell(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <decimal>()),
                                     Times.Never);
        }
        public void TickReceivedBelowThreshold()
        {
            var     orderServiceMoq  = new Mock <IOrderService>();
            var     equityCode       = "CODE1";
            var     quantity         = 1;
            var     price            = 1.23M;
            var     actualEquityCode = string.Empty;
            decimal?actualPrice      = null;


            var equityOrder = new EquityOrder(orderServiceMoq.Object, 10);

            equityOrder.OrderPlaced += delegate(OrderPlacedEventArgs e)
            {
                actualEquityCode = e.EquityCode;
                actualPrice      = e.Price;
            };

            equityOrder.ReceiveTick(equityCode, price);

            orderServiceMoq.Verify(t => t.Buy(equityCode, quantity, price), Times.Once);
            Assert.AreEqual(equityCode, actualEquityCode);
            Assert.AreEqual(price, actualPrice);
        }
예제 #7
0
            public void ReceiveTickShouldPlaceOrderForMatchedTickThresholdPrice()
            {
                _equityOrder.ReceiveTick(equityCode, priceBelowThreshhold);

                _orderServiceMock.Verify(x => x.Buy(equityCode, quantity, priceBelowThreshhold));
                _orderServiceMock.VerifyNoOtherCalls();
            }
예제 #8
0
        public void ReceiveTickShouldPlaceOrderForRelevantTickAndPrice()
        {
            equityOrder.ReceiveTick(relevantEquityCode, priceBelowThreshhold);

            orderServiceMock.Verify(x => x.Buy(relevantEquityCode, quantity, priceBelowThreshhold));
            orderServiceMock.VerifyNoOtherCalls();
        }