public void SubscribingToMarketDepthUpdates_Should_InvokeUpdateMethod() { // Arrange var sb = new StringBuilder(); var testWriter = new StringWriter(sb); var client = TestHelpers.PrepareSocketClient(() => Construct(new CoinExSocketClientOptions() { LogVerbosity = CryptoExchange.Net.Logging.LogVerbosity.Debug, LogWriters = new List <TextWriter> { testWriter } })); var expected = new CoinExSocketMarketDepth() { Asks = new List <CoinExDepthEntry> { new CoinExDepthEntry() { Amount = 0.1m, Price = 0.2m } }, Bids = new List <CoinExDepthEntry> { new CoinExDepthEntry() { Amount = 0.1m, Price = 0.2m } } }; CoinExSocketMarketDepth actual = null; var sendWait = TestHelpers.WaitForSend(client); var subTask = client.SubscribeToMarketDepthUpdatesAsync("ETHBTC", 10, 1, (market, full, data) => { actual = data; }); if (!sendWait.Result) { Assert.Fail(sb.ToString()); } InvokeSubResponse(client); subTask.Wait(); // Act InvokeSubUpdate(client, "depth.update", true, expected, "ETHBTC"); // Assert Assert.IsTrue(subTask.Result.Success); Assert.IsTrue(actual != null); TestHelpers.PublicInstancePropertiesEqual(expected, actual); }
private void HandleUpdate(string market, bool full, CoinExSocketMarketDepth data) { updateReceived = true; if (full) { SetInitialOrderBook(DateTime.UtcNow.Ticks, data.Asks, data.Bids); } else { var processEntries = new List <ProcessEntry>(); processEntries.AddRange(data.Asks.Select(a => new ProcessEntry(OrderBookEntryType.Ask, a))); processEntries.AddRange(data.Bids.Select(b => new ProcessEntry(OrderBookEntryType.Bid, b))); UpdateOrderBook(DateTime.UtcNow.Ticks, DateTime.UtcNow.Ticks, processEntries); } }