Пример #1
0
        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();
        }
Пример #2
0
        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()
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }