Example #1
0
        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]));
        }