public void SubscribingToPositionUpdates_Should_TriggerWithPositionUpdate(string updateType, BitfinexEventType eventType, bool single = true) { // arrange var socket = new TestSocket(); socket.CanConnect = true; var client = TestHelpers.CreateAuthenticatedSocketClient(socket); var rstEvent = new ManualResetEvent(false); BitfinexSocketEvent <BitfinexPosition[]> result = null; var expected = new BitfinexSocketEvent <BitfinexPosition[]>(eventType, new[] { new BitfinexPosition() { } }); client.SubscribeToTradingUpdatesAsync(null, null, data => { result = data; rstEvent.Set(); }); // act socket.InvokeMessage(new BitfinexAuthenticationResponse() { Event = "auth", Status = "OK" }); socket.InvokeMessage(single ? new object[] { 0, updateType, new BitfinexPosition() } : new object[] { 0, updateType, new[] { new BitfinexPosition() } }); rstEvent.WaitOne(1000); // assert Assert.IsTrue(TestHelpers.AreEqual(result.Data[0], expected.Data[0])); }
public void SubscribingToWalletUpdates_Should_TriggerWithWalletUpdate(string updateType, BitfinexEventType eventType, bool single = true) { // arrange var socket = new TestSocket(); socket.CanConnect = true; var client = TestHelpers.CreateAuthenticatedSocketClient(socket); var rstEvent = new ManualResetEvent(false); BitfinexSocketEvent <IEnumerable <BitfinexWallet> > result = null; var expected = new BitfinexSocketEvent <IEnumerable <BitfinexWallet> >(eventType, new[] { new BitfinexWallet() { } }); client.SpotStreams.SubscribeToBalanceUpdatesAsync(data => { result = data.Data; rstEvent.Set(); }); // act socket.InvokeMessage(new BitfinexAuthenticationResponse() { Event = "auth", Status = "OK" }); socket.InvokeMessage(single ? new object[] { 0, updateType, new BitfinexWallet() } : new object[] { 0, updateType, new[] { new BitfinexWallet() } }); rstEvent.WaitOne(1000); // assert Assert.IsTrue(TestHelpers.AreEqual(result.Data.First(), expected.Data.First())); }
private void HandleAccountEvent(BitfinexSocketEvent evnt) { if (evnt.Event == WalletsSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexWallet[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexWalletSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == OrdersSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexOrder[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexOrderSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == PositionsSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexPosition[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexPositionsSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == FundingOffersSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexFundingOffer[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexFundingOffersSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == FundingCreditsSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexFundingCredit[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexFundingCreditsSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == FundingLoansSnapshotEvent) { var obj = evnt.Data.ToObject <BitfinexFundingLoan[]>(); foreach (var handler in GetRegistrationsOfType <BitfinexFundingLoansSnapshotEventRegistration>()) { handler.Handler(obj); } } else if (evnt.Event == ActiveTradesSnapshotEvent) { } else { Log.Write(LogVerbosity.Warning, $"Received unknown account event: {evnt.Event}, data: {evnt.Data}"); } }