using CryptoExchange.Net.Interfaces; using CryptoExchange.Net.Objects; using CryptoExchange.Net.Objects.Sockets; using CryptoExchange.Net.Sockets; using Microsoft.Extensions.Logging; using Moq; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace CryptoExchange.Net.UnitTests.TestImplementations.Sockets { internal class TestSubscriptionWithResponseCheck : Subscription { private readonly Action> _handler; private readonly string _channel; public override HashSet ListenerIdentifiers { get; set; } public TestSubscriptionWithResponseCheck(string channel, Action> handler) : base(Mock.Of(), false) { ListenerIdentifiers = new HashSet() { channel }; _handler = handler; _channel = channel; } public override CallResult DoHandleMessage(SocketConnection connection, DataEvent message) { var data = (T)message.Data; _handler.Invoke(message.As(data)); return new CallResult(null); } public override Type GetMessageType(IMessageAccessor message) => typeof(T); public override Query GetSubQuery(SocketConnection connection) => new TestChannelQuery(_channel, "subscribe", false, 1); public override Query GetUnsubQuery() => new TestChannelQuery(_channel, "unsubscribe", false, 1); } }