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); }
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); }
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); }
public void ReceiveTickShouldPlaceOrderForMatchedTickThresholdPrice() { _equityOrder.ReceiveTick(equityCode, priceBelowThreshhold); _orderServiceMock.Verify(x => x.Buy(equityCode, quantity, priceBelowThreshhold)); _orderServiceMock.VerifyNoOtherCalls(); }
public void ReceiveTickShouldPlaceOrderForRelevantTickAndPrice() { equityOrder.ReceiveTick(relevantEquityCode, priceBelowThreshhold); orderServiceMock.Verify(x => x.Buy(relevantEquityCode, quantity, priceBelowThreshhold)); orderServiceMock.VerifyNoOtherCalls(); }