private void HandleUpdate(BittrexStreamUpdateExchangeState data) { var updates = new List <ProcessEntry>(); updates.AddRange(data.Sells.Select(a => new ProcessEntry(OrderBookEntryType.Ask, a))); updates.AddRange(data.Buys.Select(b => new ProcessEntry(OrderBookEntryType.Bid, b))); UpdateOrderBook(data.Nonce, data.Nonce, updates); }
public void SubscribingToExchangeUpdates_Should_ReceiveUpdate() { // arrange var socket = new TestSocket(); socket.SetProxyResponse(true); socket.CanConnect = true; var client = TestHelpers.CreateSocketClient(socket, new BittrexSocketClientOptions() { LogVerbosity = LogVerbosity.Debug }); BittrexStreamUpdateExchangeState result = null; var subResponse = client.SubscribeToExchangeStateUpdates("market", (test) => result = test); var data = new BittrexStreamUpdateExchangeState() { Nonce = 1, MarketName = "market", Buys = new List <BittrexStreamOrderBookUpdateEntry> { new BittrexStreamOrderBookUpdateEntry() { Quantity = 0.1m, Price = 0.2m, Type = OrderBookEntryType.NewEntry } }, Sells = new List <BittrexStreamOrderBookUpdateEntry> { new BittrexStreamOrderBookUpdateEntry() { Quantity = 0.4m, Price = 0.5m, Type = OrderBookEntryType.RemoveEntry } }, Fills = new List <BittrexStreamFill> { new BittrexStreamFill() { Rate = 0.6m, Quantity = 0.7m, OrderType = OrderSide.Buy, Timestamp = new DateTime(2018, 1, 1) } } }; // act socket.InvokeMessage(WrapResult("uE", data)); // assert Assert.IsNotNull(result); Assert.IsTrue(TestHelpers.AreEqual(data, result, "Buys", "Sells", "Fills")); Assert.IsTrue(TestHelpers.AreEqual(data.Buys[0], result.Buys[0])); Assert.IsTrue(TestHelpers.AreEqual(data.Sells[0], result.Sells[0])); Assert.IsTrue(TestHelpers.AreEqual(data.Fills[0], result.Fills[0])); }