Exemple #1
0
        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);
        }
Exemple #2
0
 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);
     }
 }