public void GetRateTest_ChecksTheRateForTheGivenCurrencyPairAfterSubmittingDepthLevels_ChecksTheRateReturnedToVerify() { MarketController marketController = (MarketController)_applicationContext["MarketController"]; BBOMemoryImage bboMemoryImage = (BBOMemoryImage)_applicationContext["BBOMemoryImage"]; DepthLevel bidLevel1 = new DepthLevel(new Price(491)); DepthLevel bidLevel2 = new DepthLevel(new Price(492)); DepthLevel bidLevel3 = new DepthLevel(new Price(493)); DepthLevel askLevel1 = new DepthLevel(new Price(494)); DepthLevel askLevel2 = new DepthLevel(new Price(495)); DepthLevel askLevel3 = new DepthLevel(new Price(496)); bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel1, askLevel1); IHttpActionResult httpActionResult = marketController.GetRate("XBT/USD"); OkNegotiatedContentResult <Rate> returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; Rate rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(492.5, rate.RateValue); // MidPoint of bidLevel1 = 491 & askLevel1 = 494 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel2, askLevel2); httpActionResult = marketController.GetRate("XBT/USD"); returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(493.5, rate.RateValue); // MidPoint of bidLevel2 = 492 & askLevel2 = 495 bboMemoryImage.OnBBOArrived("XBT/USD", bidLevel3, askLevel3); httpActionResult = marketController.GetRate("XBT/USD"); returnedOkRate = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = returnedOkRate.Content; Assert.AreEqual("XBT/USD", rate.CurrencyPair); Assert.AreEqual(494.5, rate.RateValue); // MidPoint of bidLevel3 = 493 & askLevel3 = 496 }
public void GetRateEndToEndTests_SubmitsOrdersAndChecksTheRateForOneCurrencyPair_VerifiesThroughTheReturnedRate() { // Get the instance through Spring configuration OrderController orderController = (OrderController)_applicationContext["OrderController"]; orderController.Request = new HttpRequestMessage(HttpMethod.Post, ""); orderController.Request.Headers.Add("Auth", "123456789"); MarketController marketController = (MarketController)_applicationContext["MarketController"]; ManualResetEvent manualResetEvent = new ManualResetEvent(false); IHttpActionResult orderHttpResult = orderController.CreateOrder(new CreateOrderParam() { Pair = "XBTUSD", Price = 491, Volume = 100, Side = "buy", Type = "limit" }); manualResetEvent.Reset(); manualResetEvent.WaitOne(2000); orderController.CreateOrder(new CreateOrderParam() { Pair = "XBTUSD", Price = 494, Volume = 900, Side = "sell", Type = "limit" }); manualResetEvent.Reset(); manualResetEvent.WaitOne(2000); IHttpActionResult httpActionResult = marketController.GetRate("XBTUSD"); OkNegotiatedContentResult <Rate> okResponse = (OkNegotiatedContentResult <Rate>)httpActionResult; Rate rate = okResponse.Content; Assert.AreEqual("XBTUSD", rate.CurrencyPair); Assert.AreEqual(492.5, rate.RateValue); // MidPoint of xbtUsdBidLevel = 491 & xbtUsdAskLevel = 494 orderController.CreateOrder(new CreateOrderParam() { Pair = "XBTUSD", Price = 493, Volume = 1000, Side = "buy", Type = "limit" }); manualResetEvent.Reset(); manualResetEvent.WaitOne(2000); httpActionResult = marketController.GetRate("XBTUSD"); okResponse = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = okResponse.Content; Assert.AreEqual("XBTUSD", rate.CurrencyPair); Assert.AreEqual(493.5, rate.RateValue); // MidPoint of xbtUsdBidLevel = 493 & xbtUsdAskLevel = 496 // Fill the existing top Ask order orderController.CreateOrder(new CreateOrderParam() { Pair = "XBTUSD", Price = 494, Volume = 900, Side = "buy", Type = "limit" }); manualResetEvent.Reset(); manualResetEvent.WaitOne(2000); // Send a new Ask order to stay on top of the ask book orderController.CreateOrder(new CreateOrderParam() { Pair = "XBTUSD", Price = 496, Volume = 900, Side = "sell", Type = "limit" }); manualResetEvent.Reset(); manualResetEvent.WaitOne(2000); httpActionResult = marketController.GetRate("XBTUSD"); okResponse = (OkNegotiatedContentResult <Rate>)httpActionResult; rate = okResponse.Content; Assert.AreEqual("XBTUSD", rate.CurrencyPair); Assert.AreEqual(494.5, rate.RateValue); // MidPoint of xbtUsdBidLevel = 493 & xbtUsdAskLevel = 496 }