public void EnsureHandler_receives_messages() { var semaphore = new Semaphore(0, int.MaxValue); var messageList = CreateMessageList(2); _apiExecutorMock.Setup(obj => obj.Execute(It.IsAny <Func <string, string, Datafeed> >(), "sessionToken", "keyManagerToken")).Returns(new Datafeed("streamId")); _apiExecutorMock.Setup(obj => obj.Execute(It.IsAny <Func <string, string, string, int?, V2MessageList> >(), "streamId", "sessionToken", "keyManagerToken", (int?)null)) .Returns(messageList); var messagesReceived = 0; _datafeedApi.OnMessage += (_, messageEventArgs) => { ++messagesReceived; if (messageEventArgs.Message.Id == "msg2") { semaphore.Release(1); } }; var task = Task.Run(() => _datafeedApi.Listen()); if (!semaphore.WaitOne(1000)) { Assert.True(false); } _datafeedApi.Stop(); if (!task.Wait(1000)) { Assert.True(false); } Assert.True(messagesReceived >= 2); }
public void EnsureHandler_receives_messages() { var semaphore = new Semaphore(0, int.MaxValue); var messageList = CreateMessageList(2); _apiExecutorMock.Setup(obj => obj.Execute(It.IsAny <Func <string, string, CancellationToken, Task <Datafeed> > >(), "sessionToken", "keyManagerToken", default(CancellationToken))).Returns(new Datafeed() { Id = "streamId" }); _apiExecutorMock.Setup(obj => obj.ExecuteAsync(It.IsAny <Func <Task <System.Collections.ObjectModel.ObservableCollection <V4Event> > > >())) .ReturnsAsync(messageList); var messagesReceived = 0; _datafeedApi.OnMessage += (_, messageEventArgs) => { ++messagesReceived; if (messageEventArgs.Message.Id == "msg2") { semaphore.Release(1); } }; var task = Task.Run(() => _datafeedApi.Listen()); if (!semaphore.WaitOne(1000)) { Assert.True(false); } _datafeedApi.Stop(); if (!task.Wait(1000)) { Assert.True(false); } Assert.True(messagesReceived >= 2); }