public async Task SimplePubSub_InProc() { // Arrange Message incoming = null; var message = new Message { ThisIsAPublishedMessageText = "published a message", Array = new [] { 1, 2, 3, 4 } }; SocketConfiguration config = new ConfigurationTestData().GetSocketConfigInProc; config.Logger.SetSilent(); var sut = new PubSub(config); var waitHandle = new ManualResetEvent(false); var xtResult = sut.SubscribeHandler <Message>(callback: m => { incoming = m; waitHandle.Set(); }, CancellationToken.None); // Act await sut.PublishAsync <Message>(message); // Assert waitHandle.WaitOne(); Assert.NotNull(incoming); Assert.True(xtResult.IsSuccess); Assert.Equal(message.Array, incoming.Array); Assert.Equal(message.ThisIsAPublishedMessageText, incoming.ThisIsAPublishedMessageText); sut.Dispose(); }
public async Task Publish_without_server_throws() { var config = new ConfigurationTestData().GetSocketConfigInProc; var sut = new PubSub(config); // Act Func <Task> pub = async() => await sut.PublishAsync <Message>(new Message()); // Assert await pub(); sut.Dispose(); // no assert as no exception is expected otherwiese the test would fail at the call to the function pub() }
public async Task SendReceive_works() { // Arrange var config = new ConfigurationTestData().GetSocketConfigInProc; using var sut = new SendReceive(config); int result = -1; sut.SetupReceiver <Message>(m => result = m.Number); // Act await sut.SendAsync(new Message { Number = 42 }); // Assert Assert.Equal(42, result); }
public async Task Exception_propagation_when_server_response_Throws_to_Requester() { var ipc = new ConfigurationTestData().GetSocketConfigInProc; using var sut = new SendReceive(ipc); sut.SetupReceiver <Message>(r => { throw new ArgumentException("this is a unit test proving the exception propagation works"); }); // Act var result = await sut.SendAsync <Message>(new Message()); // Assert Assert.False(result.IsSuccess); Assert.NotNull(result.Exception); Assert.Contains("ArgumentException", result.Exception.Message); Assert.StartsWith("Server failed with" + Environment.NewLine + "ArgumentException", result.Exception.Message); }
public async Task AsyncSendAndReceive() { // Arrange var ipc = new ConfigurationTestData().GetSocketConfigInProc; using var sut = new SendReceive(ipc); var result = -1; sut.SetupReceiverAsync <Message>(r => { result = r.Number; return(Task.CompletedTask); }); // Act var xtResult = await sut.SendAsync(new Message { Number = 2 }); // Assert Assert.True(xtResult.IsSuccess); Assert.Equal(2, result); }