public void SubscribeToTickerUpdates_Should_TriggerWithTickerUpdate()
        {
            // arrange
            var socket = new TestSocket();

            socket.CanConnect = true;
            var client = TestHelpers.CreateSocketClient(socket);

            HuobiSymbolTicks result = null;
            var subTask             = client.SubscribeToSymbolTickerUpdatesAsync((test => result = test));

            socket.InvokeMessage($"{{\"subbed\": \"test\", \"id\": \"{BaseClient.LastId}\", \"status\": \"ok\"}}");
            var subResult = subTask.Result;

            var expected = new List <HuobiSymbolTick>
            {
                new HuobiSymbolTick()
                {
                    Amount     = 0.1m,
                    Close      = 0.2m,
                    Low        = 0.3m,
                    High       = 0.4m,
                    Volume     = 0.5m,
                    Open       = 0.6m,
                    TradeCount = 12
                }
            };

            // act
            socket.InvokeMessage(SerializeExpected("market.tickers", expected));

            // assert
            Assert.IsTrue(subResult.Success);
            Assert.IsTrue(TestHelpers.AreEqual(expected[0], result.Ticks.ToList()[0]));
        }
Example #2
0
        /// <summary>
        /// Subscribes to updates for all tickers
        /// </summary>
        /// <param name="onData">The handler for updates</param>
        /// <returns></returns>
        public async Task <CallResult <UpdateSubscription> > SubscribeToSymbolTickerUpdatesAsync(Action <HuobiSymbolTicks> onData)
        {
            var request         = new HuobiSubscribeRequest(NextId().ToString(), "market.tickers");
            var internalHandler = new Action <HuobiSocketUpdate <IEnumerable <HuobiSymbolTick> > >(data =>
            {
                var result = new HuobiSymbolTicks {
                    Timestamp = data.Timestamp, Ticks = data.Data
                };
                onData(result);
            });

            return(await Subscribe(request, null, false, internalHandler).ConfigureAwait(false));
        }